WPF C#Databind:在C#中当另一个控件突出显示时更改控制颜色

时间:2014-07-03 17:57:25

标签: c# wpf data-binding

我对这个感到困惑。

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

2 个答案:

答案 0 :(得分:2)

这绝对可以通过数据绑定实现。

在XAML中的文本框集IsFocused="{Binding MyTextBoxFocused}"上。

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

在ViewModel中,定义2个属性bool MyTextBoxFocused和Brush MyButtonColor。确保您的ViewModel从INotifyPropertyChanged实现。

在MyTextBoxFocused

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

答案 1 :(得分:0)

您可以使用这样的代码动态生成一个按钮,当名为“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 };