Warum ist das WPF ComboBox zeigt nicht das ausgewählte Wert?
<CombobBox x:Name="cbo"
Style="{StaticResource ComboStyle1}"
DisplayMemberPath="NAME"
SelectedItem="{Binding Path=NAME}"
SelectedIndex="1">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Path=NAME}"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
In der Window
OnLoaded
Fall, ich schrieb den code um den ItemsSource
:
cbo.ItemsSource = ser.GetCity().DefaultView;
Beim laden der Fenster aus kann ich sehen, dass der zunächst das erste Element laden, aber zur gleichen Zeit, es löscht den angezeigten Eintrag. Ich bin stecken in diesem Szenario und jede Hilfe ist willkommen.
Hinsichtlich
Kishore
Du musst angemeldet sein, um einen Kommentar abzugeben.
SCHNELLE ANTWORT: - Set
SelectedIndex = 1
aus code-behind.Es scheint, dass der code in der XAML-Code wird zuerst ausgeführt (die
InitializeComponent()
- Methode), legt fest, welcheSelectedIndex = 1
, aberItemsSource
ist nicht angegeben, noch nicht! SoSelectedIndex
nicht beeinflussen! (Und denken Sie daran, Sie können nicht angebenItemsSource
vorInitializeComponent()
)So müssen Sie manuell einstellen
SelectedIndex = 1
nach EinstellungItemsSource
.Sollten Sie dies so tun :
XAML
Code
Oder so:
XAML
Code
Beachten Sie auch, dass habe ich entfernt
DisplayMemberPath="NAME"
denn Sie dürfen nicht beideDisplayMemberPath
undItemTemplate
zur gleichen Zeit. Und auch, verwenden Sie entwederSelectedItem
oderSelectedIndex
werden, nicht beide.Zurücksetzen die ItemsSource-Durcheinander die Auswahl.
Auch, Sie setzen beide SelectedItem und SelectedIndex. Sie wollen nur einer dieser; wenn Sie beide, nur eine wirksam werden.
Darüber hinaus Ihre SelectedItem Erklärung ist wahrscheinlich falsch.
SelectedItem="{Binding NAME}"
sucht nach einem Element, das gleich dem Wert der NAME-Eigenschaft des ambient (wahrscheinlich Fenster-Ebene) DataContext. Dies funktioniert nur, wenn die ComboBox.ItemsSource ist eine Liste von strings. Da Ihr ItemTemplate funktioniert, gehe ich davon aus ComboBox.ItemsSource ist eigentlich eine Liste von den Stadt-Objekte. Aber Sie sagen, WPF, dass die SelectedItem-sollte ein string sein (ein NAME). Dieser string wird nie gleich sein auf irgendeine Stadt-Objekt, so wird das Ergebnis keine Auswahl.Also um das problem zu lösen, nach der Einstellung von "ItemsSource", entweder oder SelectedIndex SelectedItem, je nach Ihren Anforderungen und Ihren Daten Modell: