我试图在我的WPF应用程序中做一个相当简单的事情,或者至少我觉得它很简单。
我有一个Window,后面的代码中包含一个int属性。我们称之为IntProperty。 Window实现了INotifyPropertyChanged接口,IntProperty在更改时触发通知。它看起来像这样:
public int IntProperty
{
get
{
return intProperty;
}
private set
{
if (value != intProperty)
{
intProperty = value;
NotifyPropertyChanged("IntProperty");
}
}
}
在xaml文件中,我定义了一个在Fill属性中设置了特定颜色的Rectangle。
<Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center" />
我现在要做的是根据IntProperty的值设置Fill属性。 我正在寻找一些简单的xaml线来触发这种变化。
它看起来应该是这样的(AppWindow是Window的名称):
<Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center">
<Rectangle.Triggers>
<Trigger SourceName="AppWindow" Property="IntProperty" Value="1">
<Setter TargetName="MyRectangle" Property="Fill" Value="Green" />
</Trigger>
</Rectangle.Triggers>
有没有简单的方法可以做到这一点?到目前为止,我找不到任何简单的解决方案。如果有人能指出我正确的方向,我将不胜感激。
谢谢!
答案 0 :(得分:5)
您需要使用DataTrigger。
<Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center">
<Rectangle.Triggers>
<DataTrigger Binding="{Binding IntProperty}" Value="1">
<Setter TargetName="MyRectangle" Property="Fill" Value="Green" />
</Trigger>
</Rectangle.Triggers>
</Rectangle>