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

本文关键字:TextBlock 背景 动态 事件 | 更新日期: 2023-09-27 18:05:18

目前,我有一个从XAML中的文本块到代码中的Brush变量的绑定。如果在运行代码之前静态地设置这个变量,它将正确地更改它。但是,如果我在运行时更改变量,例如在单击时,则textblock不会更新。是否需要一些函数来更新窗口之类的?

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

我的猜测是你改变颜色没有通知。绑定不能知道颜色改变了。

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

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

看看这个:

您需要根据它的声音使用Binding,而不是设置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属性已经更改