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