如何在触发器中使用属性后面的代码来更改控件属性?

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)

有没有简单的方法来做到这一点?到目前为止,我找不到任何简单的解决方案.如果有人能指出我正确的方向,我将不胜感激.

谢谢!

Ree*_*sey 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>
Run Code Online (Sandbox Code Playgroud)