Как вызвать событие при изменении свойства Current приложения - PullRequest
0 голосов
/ 12 ноября 2009

У меня есть приложение WPF.

В моем App.xaml.cs я сохраняю полное имя вошедшего в систему пользователя следующим образом:

App.Current.Properties ["FullName"] = GetValueFromDatabase ();

У меня есть два экрана / окна в одном приложении.

Первый - это scrren пользователей, который имеет редактируемую сетку данных WPF, где я могу обновить полное имя текущего пользователя. Второй - это экран с элементом управления Label / TextBox, который отображает полное имя текущих пользователей из объекта приложения.

Когда оба окна открыты, я изменяю полное имя пользователя и сохраняю изменения на первом экране. Я хочу вызвать событие, чтобы оно сразу же отражалось на втором экране?

Какое событие я подключаю к этому приложению и как?

Я использую шаблон MVVM и структуру сущностей.

Ответы [ 2 ]

0 голосов
/ 14 декабря 2009

Я реализовал класс Mediator, который действует как средство связи между моделями представления обеих Windows.

Я отослал эту статью: http://sachabarber.net/?p=477

0 голосов
/ 12 ноября 2009

Вы должны использовать свойство зависимости или убедиться, что ваша модель является INotifyPropertyChanged , чтобы другие могли связываться с ним на экране или в окне с помощью {Binding}

// if your model is derived from a sub-class of DependencyObject....
class Model : DependencyObject 
{
    public static readonly DependencyProperty MyStringProperty = 
            DependencyProperty.Register("MyString", typeof(string), 
            typeof(IncidentGraphic), new UIPropertyMetadata(string.Empty));

    public string MyString
    {
        get { return (string)GetValue(MyStringProperty ); }
        set { SetValue(MyStringProperty , value); }
    }
}

/// recommended to use INotifyPropertyChanged
class Model : INotifyPropertyChanged
{
     private void NotifyChange(string property)
     {
         PropertyChangedEventHandler handler = this.PropertyChanged;
         if (handler != null)
         {
             handler(this, new PropertyChangedEventArgs(property));
         }
     }

     string m_MyString = string.Empty;
     public string MyString
     {
         get
         {
             return m_MyString ;
         }
         set
         {
             if ( value != this.m_MyString )
             {
                 this. m_MyString  = value;
                 NotifyChange("MyString");
             }
             }
     }
}

// in your xaml.....
    <TextBox Text="{Binding MyString}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...