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

发布于 2024-10-20 00:45:53 字数 1280 浏览 3 评论 0原文

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

我将感谢我能得到的所有帮助。

谢谢, 斯特凡

I have a simple WPF application with a Window. This window has a dependency property.

    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); }
    }

Now, on this window I have a button that I wish to visually display if Shift is True or not, by applying a style.

I admit to not being very experienced in WPF, but I believe this can be solved using Data triggers. My problem is hooking it up.

Here is the xaml for the button.

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

I'll appreciate all help I can get.

Thanks,
Stefan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

み青杉依旧 2024-10-27 00:45:53

你是对的。你可以使用 datatriggers 来做到这一点。你需要将寡妇的数据上下文设置为此才能工作。否则绑定将无法访问你的依赖属性。

    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>

You are right.You can do it with datatriggers.You need to set the datacontext of the widow to this for this to work.Otherwise the binding will not be able to access your dependency property.

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

and specify your style like

 <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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文