代码之家  ›  专栏  ›  技术社区  ›  Holger Adam

如何在触发器中使用代码隐藏属性来更改控件属性?

  •  2
  • Holger Adam  · 技术社区  · 16 年前

    我试图在我的WPF应用程序中做一件相当简单的事情,或者至少我认为这很简单。

    我有一个窗口,在代码隐藏中包含一个int属性。让我们称之为IntProperty。该窗口实现INotifyPropertyChanged接口,IntProperty在更改时激发通知。看起来是这样的:

            public int IntProperty
        {
            get
            {
                return intProperty;
            }
    
            private set
            {
                if (value != intProperty)
                {
                    intProperty = value;
                    NotifyPropertyChanged("IntProperty");
                }
            }
        }
    

    在XAML文件中,我在fill属性中定义了一个具有指定颜色集的矩形。

                        <Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center" />
    

    我现在要做的是根据IntProperty的值设置Fill属性。 我正在寻找一些触发此更改的简单XAML行。

    它应该如下所示(AppWindow是窗口的名称):

    <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>
    

    有什么简单的方法吗?到目前为止,我找不到任何简单的解决办法。如果有人能给我指明正确的方向,我会很感激的。

    谢谢!

    1 回复  |  直到 16 年前
        1
  •  5
  •   Reed Copsey    16 年前

    您将要使用 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>