У меня есть две отдельные проблемы связывания со списками с шаблонами элементов, которые содержат текстовое поле.
1) Один список связывается со списком строк. Как я могу отобразить каждую строку внутри созданных текстовых полей и разрешить двухстороннее связывание одновременно? Двухстороннее связывание недопустимо без указания пути или XPath.
<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>
И 2) я использую другой список, который привязывается к некоторому универсальному списку пользовательского класса KeyValuePair. Элемент шаблона содержит текстовое поле и поле со списком. Текст текстового поля привязывается к свойству ключа каждого объекта KeyValuePair, а выбранный элемент комбинированного списка - к свойству значения. Моя проблема в том, что я хочу, чтобы комбо заполнилось списком строк, объявленных в моей модели представления, которые будут меняться во время выполнения. Datacontext окна - это модель представления, в которой объявлен список. Я не знаю точный синтаксис, который мне нужно использовать, чтобы связать там источник элементов списка. Вот мой код:
<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>