类字段更改时触发

时间:2010-09-02 19:21:59

标签: wpf

我创建了一个DataGridCellTemplate,我有一个Image控件。默认情况下,它的Source属性是X.我用我自己的类的对象填充DataGrid(还实现了INotifyPropertyChanged接口)。

当一些布尔变量从False变为True时,我想更改Image控件的Source属性。

我应该使用触发器吗?如果有,怎么样?或者也许应该用c#代码完成?

我可以制作2个图像控件,绑定并控制它们的Visible属性,但我认为这是蹩脚的解决方案。

感谢任何帮助。

2 个答案:

答案 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'

希望这有帮助!