В вашем вопросе не хватает деталей, но я все равно собираюсь ответить. Это очень непохоже на ответ на ваш вопрос, но может помочь вам понять, какие детали вам нужно добавить, чтобы направлять ответы. В свою очередь этот ответ может быть уточнен. Через несколько итераций вы можете получить ответ.
Я предполагаю, что вы привязываетесь к набору объектов, которые представляют «Папки», но вы хотите программно изменить представляемое изображение в зависимости от состояния каждого объекта, например, от некоторого свойства FolderType.
Решением этой проблемы является использование преобразователя значений, если ваши изображения из конечного набора.
public class FolderToImageConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Folder folder = value as Folder;
ImageSource result;
// Logic to determine which ImageSource to use for a folder.
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Теперь взгляните на этот XAML: -
<Grid x:Name="LayoutRoot">
<Grid.Resources>
<local:FolderToImageConverter x:Key="ImageConverter" />
</Grid.Resources>
<ListBox x:Name="foldersListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="LightGray" BorderThickness="2" CornerRadius="4">
<Image Source="{Binding Converter={StaticResource ImageConverter}}" Width="70" Height="70" Margin="3" />
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
После того, как вы связали свою коллекцию объектов Папки с ListBox
ItemsSource
, она отобразит набор изображений, используя конвертер для преобразования объекта Folder
в правильный экземпляр ImageSource
.