DataTrigger不会更改Text属性

我试图在样式上使用数据触发器来更改属性。

符合“ 最小,完整和可validation的示例 ”要求……

要重现,首先在Visual Studio中创建一个WPF应用程序。

在App.xaml.cs中:

using System.ComponentModel; using System.Windows; namespace Foo{ ///  /// Interaction logic for App.xaml ///  public partial class App : Application, INotifyPropertyChanged { private bool _clicked; public bool Clicked { get { return this._clicked; } set { this._clicked = value; this.PropertyChanged?.Invoke( this, new PropertyChangedEventArgs( "Clicked" ) ); } } public event PropertyChangedEventHandler PropertyChanged; } } 

在MainWindow.xaml中:

   True      

在MainWindow.xaml.cs中 –

 using System.Windows; namespace Foo{ ///  /// Interaction logic for MainWindow.xaml ///  public partial class MainWindow : Window { public MainWindow( ) { InitializeComponent( ); } private void button_Click( object sender, RoutedEventArgs e ) { ( Application.Current as App ).Clicked = !( Application.Current as App ).Clicked; } } } 

作为旁注 – 我尝试将数据触发器的值设置为"True" ,并且也不起作用(触发器没有捕获,并且文本没有根据将属性设置为新值而更改)。

那么为什么数据触发器没有捕获或在这里工作? (使用静态资源或文字值)? 更相关 – 为什么我会收到此错误? “在使用’DataTrigger’之后(密封),它无法修改”错误? 什么是完成我在这里尝试做的正确方法? (最好仍然使用数据触发而不是转换器,因为我需要在两个值之间切换)。

分配给TextBlock的Text属性的本地值的优先级高于DataTrigger中Setter提供的值。 有关详细信息,请参阅依赖项属性值优先级 。

由另一个Setter设置初始Text值:

      

您使用布尔资源时看到的错误消息只是XAML设计者抱怨。 运行时没有错误。