【问题标题】:How do I use a code behind property in a trigger to change a control property?如何在触发器中使用代码隐藏属性来更改控件属性?
【发布时间】:2011-01-30 21:24:04
【问题描述】:

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

我有一个窗口,它在后面的代码中包含一个 int 属性。我们称其为 IntProperty。 Window 实现 INotifyPropertyChanged 接口,IntProperty 触发更改通知。它看起来像这样:

        public int IntProperty
    {
        get
        {
            return intProperty;
        }

        private set
        {
            if (value != intProperty)
            {
                intProperty = value;
                NotifyPropertyChanged("IntProperty");
            }
        }
    }

在 xaml 文件中,我定义了一个 Rectangle,并在 Fill 属性中设置了特定的颜色。

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

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

谢谢!

【问题讨论】:

    标签: wpf xaml properties triggers


    【解决方案1】:

    您需要为此使用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>
    

    【讨论】:

    • 谢谢,这正是我所需要的。我必须添加 Style 和 Style.Triggers,并从 Rectangle 标记中删除 Fill 并将其放在 Style 标记中的 Setter 中,但随后它起作用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多