【问题标题】:How to style a button based on a property of the window如何根据窗口的属性设置按钮样式
【发布时间】:2011-07-08 15:53:56
【问题描述】:

我有一个带有 Window 的简单 WPF 应用程序。这个窗口有一个依赖属性。

    public static readonly DependencyProperty ShiftProperty;

    static VirtualKeyboard()
    {
        ShiftProperty = DependencyProperty.Register("Shift", typeof(bool), typeof(VirtualKeyboard));
    }

    public bool Shift
    {
        get { return (bool)GetValue(ShiftProperty); }
        set { SetValue(ShiftProperty, value); }
    }

现在,在此窗口上,我希望通过应用样式来直观地显示 Shift 是否为 True 的按钮。

我承认我在 WPF 方面不是很有经验,但我相信这可以使用数据触发器来解决。我的问题是连接它。

这是按钮的 xaml。

        <Button Grid.Row="4" Grid.ColumnSpan="2" Grid.Column="0" Command="local:VirtualKeyboard.ShiftButtonPressedCommand" Content="Shift" Name="ShiftButton">
            <Button.Style>
                <Style>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=Shift}" Value="True">
                            <Setter Property="Control.Background" Value="Black">

                            </Setter>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>

我将不胜感激。

谢谢, 斯蒂芬

【问题讨论】:

    标签: wpf styles datatrigger


    【解决方案1】:

    你是对的。你可以用 datatriggers 来做。你需要将寡妇的 datacontext 设置为 this 才能工作。否则绑定将无法访问你的依赖属性。

        public VirtualKeyboard()
        {
            InitializeComponent();
            DataContext = this;
        }
    

    并指定你的风格

     <Button  Grid.Column="0" Content="Shift" Name="ShiftButton">
                <Button.Style>
                    <Style>
                        <Setter Property="Button.Visibility" Value="Collapsed"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=Shift}" Value="True">
                                <Setter Property="Button.Visibility" Value="Visible">
                                </Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Button.Style>
            </Button>
    

    【讨论】:

      猜你喜欢
      • 2013-04-03
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多