如何在事件中动态更改 TextBlock 背景
How to Change TextBlock Background Dynamically On An Event
目前,我有一个从 XAML 中的文本块到代码中的 Brush 变量的绑定。如果我静态地设置这个变量,在我 运行 代码之前,它会正确地改变它。但是,如果我在 运行 时间内更改变量,例如在单击时,文本块不会更新。是否需要使用某些函数来更新 window 或类似的东西?
你需要用Binding by the sound吗,而不是设置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 属性 已更改。
我的猜测是你在没有通知的情况下改变了颜色。绑定无法知道颜色已更改。
您需要做的是实现 INotifyPropertyChanged 接口并在 Color 属性' setter 中引发 属性Changed 事件。这样,您的绑定将按预期工作。 (看看这个:https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx)
另一种方法是将 Color 实现为依赖项 属性。这样,您就不必实现 INotifyPropertyChanged 接口。/
看看这个:
目前,我有一个从 XAML 中的文本块到代码中的 Brush 变量的绑定。如果我静态地设置这个变量,在我 运行 代码之前,它会正确地改变它。但是,如果我在 运行 时间内更改变量,例如在单击时,文本块不会更新。是否需要使用某些函数来更新 window 或类似的东西?
你需要用Binding by the sound吗,而不是设置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 属性 已更改。
我的猜测是你在没有通知的情况下改变了颜色。绑定无法知道颜色已更改。
您需要做的是实现 INotifyPropertyChanged 接口并在 Color 属性' setter 中引发 属性Changed 事件。这样,您的绑定将按预期工作。 (看看这个:https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx)
另一种方法是将 Color 实现为依赖项 属性。这样,您就不必实现 INotifyPropertyChanged 接口。/
看看这个: