2016-08-30 2 views
0

Может быть, это просто в WPF, может ли кто-нибудь помочь?Сила перечитывать свойство GUI, связанное в XAML

XAML:

<GroupBox Header="{Binding Path=Caption}" Name="group"> 

C#

//simplified code 
bool _condition = false; 
bool Condition 
{ 
    get { return _condition; } 
    set { _condition = value; } 
} 

public string Caption 
{ 
    get { return Condition ? "A" : "B"; } 
} 

GroupBox отображается с "B". Хорошо.
Но позже мы меняем Condition= true, и я хочу, чтобы GroupBox обновлялся, поэтому заново зачитайте Caption, который будет «A».

Как я могу сделать это самым простым способом?
Спасибо

+0

Кажется, это то, что мне нужно, позвольте мне исследовать и вернуться, спасибо – Zotyi

ответ

1

Вам необходимо реализовать интерфейс INotifyPropertyChanged на ViewModel.

Затем в настройщике условия вы должны вызвать OnPropertyChanged («Caption»), чтобы сообщить механизм привязки xaml, что ваше свойство изменилось, и его необходимо переоценить.

public class ViewModel : INotifyPropertyChanged 
{ 
    // These fields hold the values for the public properties. 
    bool _condition = false; 
    bool Condition 
    { 
     get { return _condition; } 
     set { 
       _condition = value; 
       NotifyPropertyChanged(); 
       NotifyPropertyChanged("Caption"); 
      } 
    } 

    public string Caption 
    { 
     get { return Condition ? "A" : "B"; } 
    } 

    public event PropertyChangedEventHandler PropertyChanged; 

    // This method is called by the Set accessor of each property. 
    // The CallerMemberName attribute that is applied to the optional propertyName 
    // parameter causes the property name of the caller to be substituted as an argument. 
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "") 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
} 
Смежные вопросы