2016-06-17 3 views
0

В моем приложении у меня есть пользовательский элемент управления со следующим сегментом XAMLPropertyChanged не обновляет интерфейс в пользовательский элемент управления - универсальное приложение

<StackPanel x:Name="stackPanel" Style="{StaticResource sPanel1}" > 
    <ToggleButton Style="{StaticResource tButton}"> 
     <TextBlock Text="{Binding Note, Mode=TwoWay}" Style="{StaticResource textBlockStyle}"/> 
    </ToggleButton> 
</StackPanel> 

, что «Примечание», связанного в TextBlock определяется в моей модели, так:

private string m_Note; 
public string Note 
{ 
    get { return m_Note; } 
    set 
    { 
     m_Note = value; 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs("m_Note")); 
    } 
} 

обновлений недвижимости «Примечание», если обработчик события из моего пользовательского элемента управления фоновым кодом запускает событие:

public void cBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    cm.Note = cBox.SelectedItem.ToString(); 
} 

Но каждый раз, когда я выбираю элемент из ComboBox, пользовательский интерфейс не обновляется. Я знаю, что привязка правильная, потому что, когда я инициализирую «Примечание» в конструкторе модели, он показывает ее значение в пользовательском интерфейсе, и я знаю, что «Примечание» получает значение cBox.SelectedItem, потому что я прошел через код. Что мне не хватает?

+0

В переплете, 'UpdateSourceTrigger = PropertyChanged' – Kason

+0

Спасибо Kason за внимание, но не сделали этого, по-прежнему такой же результат – olhodolago

+2

' Path = Note'? Также поднимите изменение: «OnPropertyChanged (« Примечание »);'. Это работает от меня – Kason

ответ

1

Правильный путь и режим привязки в представлении. Вот почему вы получаете значение при инициализации. Однако ваша связанная собственность не поднимает правильное имя свойства при изменении свойства. Пользовательский интерфейс прослушивает Note, но вы поднимаете m_Note.

Вам необходимо обновить до

private string m_Note; 
public string Note 
{ 
    get { return m_Note; } 
    set 
    { 
     m_Note = value; 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs("Note")); 
    } 
} 
+0

Спасибо, Nkosi. Это был надзор, я исправил это, на удивление это не решило проблему. Свойство Note по-прежнему получает значение, но оно не обновляет пользовательский интерфейс. – olhodolago

+0

Пример решения. Я не могу отслеживать изменения на этом этапе. Счет идет в NKosi – olhodolago

Смежные вопросы