В моем приложении WPF я хочу, чтобы объект «CaseDetails» использовался глобально, то есть всеми пользовательскими элементами управления окнами &. CaseDetails реализует INotifyPropertyChanged и имеет свойство CaseName.Wpf Связывание объекта TextBlock с элементом приложения
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;
И обновлен объект CaseDetails класса App.
В моем MainWindow.xml у меня есть TextBlock, который привязан к свойству CaseName CaseDetails. Этот текстовый блок не обновляется. Код 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 не обновляется ?? Где я ошибаюсь в привязке?
Я попытался сделать CaseDetails так как он только что работал и работал, но это не имело никакого значения. Наконец, я попытался реализовать класс INotifyPropertyChanged в App, и это привело к обновлению привязки. благодаря – Tvd