WPF c#数据绑定:在c#中,当另一个控件高亮显示时,更改控件颜色

本文关键字:控件 高亮 显示 颜色 数据绑定 WPF 另一个 | 更新日期: 2023-09-27 18:11:17

我很困惑。

我想简单地改变特定按钮的颜色,如果一个特定的文本框有焦点。这是可能的与c#中的数据绑定,还是我应该使用传统的事件触发器与方法?

WPF c#数据绑定:在c#中,当另一个控件高亮显示时,更改控件颜色

使用数据绑定绝对可以实现。

在你的文本框设置IsFocused="{Binding MyTextBoxFocused}"在你的XAML。

然后在你的按钮上,设置Background="{Binding MyButtonColor}"在你的XAML。

在你的ViewModel中,定义2个属性bool MyTextBoxFocused和画笔MyButtonColor。确保你的ViewModel实现了INotifyPropertyChanged

关于MyTextBoxFocused

set 
{ 
MyButtonColor = value ? Color.Red : Color.Blue; 
RaisePropertyChanged("MyButtonColor"); 
RaisePropertyChanged("MyTextBoxFocused"); 
}

您可以使用这样的代码来动态生成一个按钮,当名为"txtBox1"的TextBox具有键盘焦点时该按钮变为红色:

Style style = new Style { TargetType = typeof(Button) };
DataTrigger trigger = new DataTrigger
    {
        Binding = new Binding("IsKeyboardFocusWithin") { ElementName = "txtBox1" },
        Value = true
    };
trigger.Setters.Add(new Setter { Property = Button.BackgroundProperty,
     Value = Brushes.Red });
style.Triggers.Add(trigger);
Button btn = new Button { Content = "Test button", Style = style };