Wpf将TextBlock绑定到App Property的成员
在我的WPF应用程序中,我希望全局使用对象“CaseDetails”,即所有窗口和用户控件。 CaseDetails实现了INotifyPropertyChanged,并具有属性CaseName。
public class CaseDetails : INotifyPropertyChanged { private string caseName, path, outputPath, inputPath; public CaseDetails() { } public string CaseName { get { return caseName; } set { if (caseName != value) { caseName = value; SetPaths(); OnPropertyChanged("CaseName"); } } } protected virtual void OnPropertyChanged(string propertyName) { PropertyChangedEventHandler handler = PropertyChanged; if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName)); } public event PropertyChangedEventHandler PropertyChanged;
在我的App.xaml.cs中,我创建了一个CaseDetails对象
public partial class App : Application { private CaseDetails caseDetails; public CaseDetails CaseDetails { get { return this.caseDetails; } set { this.caseDetails = value; } }
在我的一个用户控制代码中,我创建了CaseDetails的对象并在App类中设置
(Application.Current as App).CaseDetails = caseDetails;
App类的CaseDetails对象已更新。
在我的MainWindow.xml中,我有一个TextBlock,它绑定到CaseDetails的CaseName属性。 此Textblock不会更新。 xml代码是:
为什么这个TextBlock Text属性没有得到更新? 我在哪里遇到绑定?
绑定未更新,因为您在App类中设置了CaseDetails
属性,该属性未实现INotifyPropertyChanged。
您也可以在App类中实现INotifyPropertyChanged,或者只设置现有CaseDetails实例的属性:
(Application.Current as App).CaseDetails.CaseName = caseDetails.CaseName; ...
CaseDetails
属性可能只是readonly:
上述就是C#学习教程:Wpf将TextBlock绑定到App Property的成员分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)
public partial class App : Application { private readonly CaseDetails caseDetails = new CaseDetails(); public CaseDetails CaseDetails { get { return caseDetails; } } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1023650.html