Ich habe zwei separate Bindung Probleme mit Listboxen mit einem Itemtemplate, die eine Texbox enthält.
1) Ein Listenfeld ist mit einer Liste von Zeichenfolgen verbunden. Wie kann ich die einzelnen Zeichenfolgen in den erstellten Textfeldern anzeigen und gleichzeitig eine bidirektionale Bindung ermöglichen? Zwei-Wege-Bindung ist ohne Angabe eines Pfads oder XPaths nicht zulässig.
<ListBox Height="231" HorizontalAlignment="Left" Margin="0,167,0,0" Name="listBoxKeys" VerticalAlignment="Top" Width="219" ItemsSource="{Binding Path=SelectedPlatform.Keys}" SelectedItem="{Binding Path=SelectedKey,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<TextBox Text="{Binding Mode=OneWay}" Margin="0,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Und 2) Ich verwende eine andere Listbox, die mit einer generischen Liste einer benutzerdefinierten KeyValuePair-Klasse verbunden ist. Das Itemtemplate enthält ein Textfeld und eine Combobox. Der Text in der Textbox ist an die Key-Eigenschaft jedes KeyValuePair-Objekts gebunden und die Combobox selecteditem an die Value-Eigenschaft. Mein Problem ist, dass ich möchte, dass die Combobox mit einer Liste von Strings gefüllt wird, die in meinem Viewmodel deklariert sind und die sich zur Laufzeit ändern werden. Der Datakontext des Fensters ist das Viewmodel, in dem die Liste deklariert ist. Ich kenne die genaue Syntax nicht, die ich verwenden muss, um die Combobox itemssource dort zu binden. Hier ist mein Code:
<ListBox Height="393" HorizontalAlignment="Left" Margin="0,72,0,0" Name="listBoxActions" VerticalAlignment="Top" Width="254" ItemsSource="{Binding Path=SelectedPlayer.ControlProfile.MappedActions}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<TextBox Text="{Binding Key, Mode=TwoWay,UpdateSourceTrigger=LostFocus}" Margin="10,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<ComboBox Margin="10,0,0,0" Height="Auto" MinWidth="80" MaxWidth="80" HorizontalAlignment="Left" VerticalAlignment="Center" ItemsSource="{Binding ?}" SelectedItem="{Binding Value, Mode=TwoWay}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>