Hol*_*dam 2 wpf xaml triggers properties
我试图在我的WPF应用程序中做一个相当简单的事情,或者至少我认为它很简单.
我有一个窗口,在后面的代码中包含一个int属性.我们称之为IntProperty.Window实现了INotifyPropertyChanged接口,IntProperty在更改时触发通知.它看起来像这样:
public int IntProperty
{
get
{
return intProperty;
}
private set
{
if (value != intProperty)
{
intProperty = value;
NotifyPropertyChanged("IntProperty");
}
}
}
Run Code Online (Sandbox Code Playgroud)
在xaml文件中,我定义了一个在Fill属性中设置了特定颜色的Rectangle.
<Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center" />
Run Code Online (Sandbox Code Playgroud)
我现在要做的是根据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>
Run Code Online (Sandbox Code Playgroud)
有没有简单的方法来做到这一点?到目前为止,我找不到任何简单的解决方案.如果有人能指出我正确的方向,我将不胜感激.
谢谢!
你会想要使用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>
Run Code Online (Sandbox Code Playgroud)