Изменение изображения с помощью триггера WPF MVVM
Это может быть не более умным, но я просто не могу заставить его работать. У меня есть модель представления, которая предоставляет свойство с именем bool NotFound. Я хотел бы связать это с триггером, чтобы при изменении изображения изображение в моем элементе управления менялось.
Это xaml, который я использую в качестве шаблона данных для одной из моих моделей представлений.
<DataTemplate DataType="{x:Type local:TabFileViewModel}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0" Source="Image\TabFile.PNG" />
<TextBlock Text="{Binding Name}" ToolTip="{Binding FullPath}"/>
</StackPanel>
</DataTemplate>
Я хотел бы иметь возможность привязать к свойству NotFound и изменить источник изображения.
Ответы
Ответ 1
Все хорошо, что я понял.
<DataTemplate DataType="{x:Type local:TabFileViewModel}">
<StackPanel Orientation="Horizontal">
<Image Width="16" Height="16" Margin="3,0">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers>
<DataTrigger Binding="{Binding NotFound}" Value="false">
<Setter Property="Source" Value="Image\TabFile.PNG"/>
</DataTrigger>
<DataTrigger Binding="{Binding NotFound}" Value="true">
<Setter Property="Source" Value="Image\ErrorTabFile.PNG"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataTemplate>
Ответ 2
<DataTemplate DataType="{x:Type local:TabFileViewModel}">
<StackPanel Orientation="Horizontal">
<Grid>
<Image x:Name="a" Width="16" Height="16" Margin="3,0" Source="Image\NotFounds.PNG" />
<Image x:Name="b" Width="16" Height="16" Margin="3,0" Source="Image\TabFile.PNG" />
</Grid>
<TextBlock Text="{Binding Name}" ToolTip="{Binding FullPath}"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding={Binding NotFound} Value="true">
<Setter TargetName="a" TargetProperty="Visibility" Value="Visible" />
<Setter TargetName="b" TargetProperty="Visibility" Value="Hidden" />
</DataTrigger>
<DataTrigger Binding={Binding NotFound} Value="false">
<Setter TargetName="a" TargetProperty="Visibility" Value="Hidden" />
<Setter TargetName="b" TargetProperty="Visibility" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>