如何在事件上动态更改TextBlock背景
本文关键字:TextBlock 背景 动态 事件 | 更新日期: 2023-09-27 18:05:18
目前,我有一个从XAML中的文本块到代码中的Brush变量的绑定。如果在运行代码之前静态地设置这个变量,它将正确地更改它。但是,如果我在运行时更改变量,例如在单击时,则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属性已经更改