<DataTemplate>
<Image Name="ServerImageSetter" Source="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test1.svg}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding ServerKindTrigger}" Value="0">
<Setter TargetName="ServerImageSetter" Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test2.svg}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ServerKindTrigger}" Value="1">
<Setter TargetName="ServerImageSetter" Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ServerKindTrigger}" Value="2">
<Setter TargetName="ServerImageSetter" Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/>
</DataTrigger>
</DataTemplate
在我的C#代码中,我将我的值的类型切换为0-2,这应该会改变图像。但这种改变并不奏效。
public int ServerKindTrigger
{
get { return _serverKindTrigger; }
set { _serverKindTrigger = value;
RaisePropertyChanged();
}
}
//Here I switch my serverkind and wanna change the image value
switch (_serverKind)
{
case Servers.test: _serverKindTrigger = 0;
答案 0 :(得分:0)
您正在更改本地字段而不是属性,这就是它不会触发绑定更新的原因。
更改您的开关/案例分配以分配ServerKindTrigger属性。
{{1}}
答案 1 :(得分:0)
除了设置支持字段_serverKindTrigger
而不是属性ServerKindTrigger
,因此不触发PropertyChangedEvent,您将直接设置Image控件的Source属性:
<Image Source="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test1.svg}"/>
这个所谓的本地值总是优先于DataTriggers中Setters的值。有关参考,请参阅Dependency Property Value Precedence。
将您的XAML更改为:
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test1.svg}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ServerKindTrigger}" Value="0">
<Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test2.svg}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ServerKindTrigger}" Value="1">
<Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ServerKindTrigger}" Value="2">
<Setter Property="Source" Value="{svg2Xaml:SvgImage ServerAdministrator2;component/Images/test3.svg}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>