2016-12-16 4 views
1

Ich habe ein neues Projekt mit template10 erstellt und arbeite in einem einfachen Formular: Ich lade eine Liste von Elementen von einem Remote-Server in einer Comboxbox und wähle eines der Elemente nach der Liste aus ist geladen.
Ich versuchte SelectedValue, SelectedItem ot SelectedIndex, aber wenn das Formular die Listbox erscheint nicht ausgewählten gezeigt setzt.
Fehle ich etwas?Combobox ausgewähltes Element kann keine Ansicht öffnen

dies ist der XAML

 <ComboBox x:Name="voceSpesaCb" Margin="16,16,0,0" 
      RelativePanel.AlignLeftWith="parameterResizer" 
      RelativePanel.Below="voceSpesaTextBlock" 
      DisplayMemberPath="Descrizione" 
      SelectedValue="{x:Bind ViewModel.VoceCorrente, Converter={StaticResource XConverter}, Mode=TwoWay}" 
      ItemsSource="{x:Bind ViewModel.Voci, Converter={StaticResource XConverter}}" 
      HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> 

dies der Code ist

 Voci = await vociSpesaTable.OrderBy(vs => vs.Descrizione).ToListAsync(); 
     VoceCorrente = Voci.FirstOrDefault(vs => vs.VoceSpesaNo == Item.VoceSpesaNo); 

in der Setter der Eigenschaften dort der Anruf an die

RaisePropertyChanged ist
+0

den Code anzeigen Sie verwenden. Wenn Sie einen bestimmten Wert auswählen möchten, sollte jeder davon funktionieren (vorausgesetzt, Sie haben den richtigen Code zur Auswahl mit der gewählten Methode). – Takarii

Antwort

1

Sieht aus Loike ich das Problem gefunden. Aus Gründen, die ich nicht vollständig verstehe, muss auch Mode = TwoWay für die ItemsSource-Eigenschaft gesetzt werden.

  <ComboBox x:Name="voceSpesaCb" Margin="16,16,0,0" 
       RelativePanel.AlignLeftWith="parameterResizer" 
       RelativePanel.Below="voceSpesaTextBlock" 
       DisplayMemberPath="Descrizione" 
       SelectedValue="{x:Bind ViewModel.VoceCorrente, Converter={StaticResource XConverter}, Mode=TwoWay}" 
       ItemsSource="{x:Bind ViewModel.Voci, Converter={StaticResource XConverter}, Mode=TwoWay}" 
       HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
         /> 

Auf diese Weise funktioniert es

+0

Es gibt 3 Bindungsmodi. 'OneTime' liest das View-Modell, wenn das XAML initialisiert wird, was sehr leistungsfähig ist, aber wenn Ihre View-Model-Daten noch nicht geladen sind, kann dies ein Problem sein. 'OneWay' liest das View-Modell nach der Initialisierung und richtet die Ereignisse so ein, dass sie auf Änderungen des View-Modells warten. Weder wird auf das Ansichtsmodell geschrieben. 'TwoWay' verhält sich wie 'OneWay' PLUS, wenn der Wert in XAML geändert wird, wird er wieder auf den aktualisierten Wert des View-Model-Property-Setters geschrieben. 'TwoWay' ist die einzige Möglichkeit, Ihr View-Modell zu aktualisieren. http://blog.jerrynixon.com/2012/10/xaml-binding-basics-101.html –

Verwandte Themen