如何根据窗口的属性设置按钮样式

时间:2011-03-04 08:33:46

标签: wpf styles datatrigger

我有一个带有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>

我会感激所有帮助。

谢谢, 斯蒂芬

1 个答案:

答案 0 :(得分:0)

你是对的。你可以使用datatriggers来实现它。你需要将寡妇的datacontext设置为此工作。否则绑定将无法访问你的依赖属性。

    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>