如何在事件上动态更改TextBlock背景

时间:2015-07-29 15:42:06

标签: c# wpf xaml background textblock

目前,我有一个从XAML中的文本块到代码中的Brush变量的绑定。如果我静态设置此变量,在运行代码之前,它将正确地更改它。但是,如果我在运行时更改变量,例如在单击时,文本块不会更新。是否有一些功能需要用于更新窗口或类似的东西?

2 个答案:

答案 0 :(得分:0)

你需要通过它的声音来使用绑定,而不是设置TextBlock.Background?变量的属性:

Binding myBinding = new Binding("MyPropertyName");
myBinding.Source = ViewModel.MyPropertyName;
myBinding.Mode = BindingMode.OneWay;
BindingOperations.SetBinding(textBlock, TextBlock.BackgroundProperty, myBinding);

您还需要在ViewModel中实现INotifyPropertyChanged以触发PropertyChanged事件并通知UI该属性已更改。

答案 1 :(得分:0)

我的猜测是你在没有通知的情况下改变颜色。绑定无法知道颜色的变化。

您需要做的是实现INotifyPropertyChanged接口并在Color属性中引发propertyChanged事件。二传手。这样,您的绑定将按预期工作。 (看看这个:https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx

另一种方法是将Color实现为依赖属性。这样,您就不必实现INotifyPropertyChanged接口./

看看这个: