如何在事件中动态更改 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 接口。/

看看这个: