2016-06-17 13 views
0

In meiner Anwendung habe ich eine Benutzersteuerung mit dem folgende XAML-SegmentProperty nicht in Benutzersteuerung der Aktualisierung UI - Universal-App

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

, die in den TextBlock gebunden 'Anmerkung' ist in meinem Modell definiert als so:

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

die Eigenschaft Updates 'Anmerkung', wenn ein Event-Handler von meinem Benutzersteuer Code-Behind löst das Ereignis:

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

Aber jedes Mal, wenn ich ein Element aus der ComboBox auswähle, wird die Benutzeroberfläche nicht aktualisiert. Ich weiß, dass die Bindung korrekt ist, denn wenn ich "Note" im Konstruktor des Modells initialisiere, zeigt es seinen Wert in der Benutzeroberfläche und ich weiß, dass "Note" den Wert cBox.SelectedItem erhält, weil ich den Code durchgelaufen bin. Was vermisse ich?

+0

Innerhalb der Bindung, 'Update = PropertyChanged' – Kason

+0

Danke Kason für Ihre Aufmerksamkeit, aber das tat es nicht, noch gleiche Ergebnis – olhodolago

+2

' Path = Note'? Erhöhen Sie die Änderung auch 'OnPropertyChanged ("Note"); '. Es funktioniert von mir – Kason

Antwort

1

Der Bindungspfad und der Modus in der Ansicht ist korrekt. Deshalb erhalten Sie den Wert beim Initialisieren. Ihre gebundene Eigenschaft erhöht jedoch nicht den korrekten Eigenschaftsnamen für die geänderte Eigenschaft. Die Benutzeroberfläche wartet auf Note, aber Sie erhöhen m_Note.

Sie müssen aktualisieren, um

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

Vielen Dank, Nkosi. Das war ein Versehen, ich reparierte es, überraschenderweise löste es das Problem nicht. Die Note-Eigenschaft erhält weiterhin den Wert, aktualisiert jedoch nicht die Benutzeroberfläche. – olhodolago

+0

Beispiel gelöst. Ich kann die Änderungen zu diesem Zeitpunkt nicht verfolgen. Wertung geht an NKosi – olhodolago