在我的 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 中,我有一个绑定到 CaseDetails 的 CaseName 属性的 TextBlock。此文本块不会更新。xml代码是:
<TextBlock Name="caseNameTxt" Margin="0, 50, 0, 0" FontWeight="Black" TextAlignment="Left" Width="170" Text="{Binding Path=CaseDetails.CaseName, Source={x:Static Application.Current} }"/>
为什么这个 TextBlock Text 属性没有更新?我在 Binding 中哪里出错了?