У меня есть DataTemplate ниже, который решает, что .png показать на основе DirType. В настоящее время, если мы получим DirType из 3, мы показываем ./images/file.pngИзменить DataTemplate в файле codebehind dynamcailly
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=DirType}" Value="0">
<Setter Property="Image.Source" TargetName="img" Value="./Images/MyComputer.jpg"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=DirType}" Value="1">
<Setter Property="Image.Source" TargetName="img" Value="./Images/diskdrive.png"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=DirType}" Value="2">
<Setter Property="Image.Source" TargetName="img" Value="./Images/folder.png"></Setter>
<Setter Property="Text" TargetName="ObjType" Value="File Folder"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=DirType}" Value="3">
<Setter Property="Image.Source" TargetName="img" Value="./Images/file.png"></Setter>
<Setter Property="Text" TargetName="ObjType" Value="{Binding Ext}"></Setter>
<Setter Property="Visibility" TargetName="ObjSize" Value="Visible"></Setter>
<Setter Property="Text" TargetName="ObjSize" Value="{Binding Size}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True" >
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
Затем я использую его в ListBox:
<ListBox x:Name="dirList" Grid.ColumnSpan="3" IsSynchronizedWithCurrentItem="True"
ItemTemplate="{StaticResource DirViewTemplate}" BorderThickness="0"
HorizontalContentAlignment="Left" VerticalContentAlignment="Top"
Grid.Column="0" Grid.Row="1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectedItem="{Binding Path=CurrentItem,Mode=OneWayToSource}"
MouseDoubleClick="dirList_MouseDoubleClick"
KeyDown="dirList_KeyDown">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal" ItemWidth="220"></WrapPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Теперь я хочу, чтобы динамически изменять изображение, отображаемое для значения типа файла = 3 на основе их типов файлов. Прежде чем все файлы имеют одинаковый значок, отображаемый в списке, но теперь я хочу, чтобы они вытаскивали значки, отображаемые в проводнике Windows. Я пытался динамически обращаться к DataTemplate при добавлении элементов в список, но я не мог заставить его работать.
Любые советы?
Попробуйте несколько триггеров. – sthotakura