-1
我知道已经存在一些问题,但我无法解决他们的问题。使用数据模板切换图像
问题:我尝试使用数据模板更改图像,但仅显示默认图像。
代码: 我的XAML代码是这样的:
<Window.Resources>
<DataTemplate x:Key="MultiTemplate">
<Image Height="17" Width="17">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="{svg2Xaml:SvgImage VideoControllerTester;component/Resources/Start.svg}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MultiTrigger}" Value="start">
<Setter Property="Source" Value="{svg2Xaml:SvgImage VideoControllerTester;component/Resources/Start.svg}"/>
</DataTrigger>
<DataTrigger Binding="{Binding MultiTrigger}" Value="stop">
<Setter Property="Source" Value="{svg2Xaml:SvgImage VideoControllerTester;component/Resources/Stop.svg}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</DataTemplate>
</Window.Resources>
<ContentControl ContentTemplate="{DynamicResource MultiTemplate}"/>
在后面的代码,我设置MultiTrigger = “启动” 或 “停止”。
问题:我可以使用内容控制显示图像吗?或者我用数据模板做一些愚蠢的事情?
编辑:
public string MultiTrigger
{
get { return _multiTrigger; }
set
{
_multiTrigger = value;
RaisePropertyChanged();
}
}
ContentControl的DataContext应设置为具有MultiTrigger属性的对象。 MultiTrigger属性设置器应该触发一个PropertyChanged事件。 – Clemens
......或者,如果'MultiTrigger'是你窗口类的一个属性,你必须使用'RelativeSource = {RelativeSource AncestorType = Window}'来绑定它。 –
除此之外,您实际上并不需要具有DataTemplate的ContentControl。您还可以将图像样式作为资源并直接将其应用于图像控件。 – Clemens