我创建了一个DataGridCellTemplate,我有一个Image控件。默认情况下,它的Source属性是X.我用我自己的类的对象填充DataGrid(还实现了INotifyPropertyChanged接口)。
当一些布尔变量从False变为True时,我想更改Image控件的Source属性。
我应该使用触发器吗?如果有,怎么样?或者也许应该用c#代码完成?
我可以制作2个图像控件,绑定并控制它们的Visible属性,但我认为这是蹩脚的解决方案。
感谢任何帮助。
答案 0 :(得分:0)
您应该看看转换器是否会执行您想要的操作。您可以通过创建实现IValueConverter
接口的类(MSDN在其网站上有一个示例)在代码中编写一个。
然后您将ValueConverter声明为如下所示的StaticResource(如果您还没有它,则必须声明本地命名空间):
<local:BoolToImageConverter x:Key="imageConverter" />
要使用它,然后将ImageControl的Source属性绑定到Boolean属性并在绑定中指定转换器。一个例子如下:
<Image Source={Binding Path=IsImageShown, Converter={StaticResource imageConverter}} />
还需要注意的是,转换器不能只将包含URI的字符串返回到图像位置。它应返回ImageSource
,例如BitmapImage
。
答案 1 :(得分:0)
在您的DataTemplate中尝试以下操作:
<DataTemplate>
<Image Name="Image" Source="X"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding BooleanProperty}" Value="True">
<Setter Property="Source" TargetName="Image" Value="Y" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
其中BooleanProperty是触发源移位的属性。请注意,Image必须具有名称 - 并且应该在Setter-tag中使用。在示例中 - 我将源从'X'更改为'Y'
希望这有帮助!