Listbox
の場合は、が現在Datatemplate
にあります。 Combobox
をstring[]
にバインドしました。これはうまくいきます。ComboBox DataTemplateをバインドしたリストボックス
Combobox
が変更された場合、Listbox
のインデックスは配列内の文字列に関連付けられます。 I. Listbox
の3行目のCombobox
の4番目の項目を選択すると、<文字列(Combobox
文字列)、int(Listbox
インデックス)で表されるはずですが、重複したデータを保存するためにこのデータをCombobox
結合。
私は鍵の値のペアを使用できると思っていましたが、DataTemplate
にあるCombobox
にこれをバインドする方法がわかりません(またはこれが最良の方法です)。
注
は明らかにこれは、各Combobox
文字列は一度に1つのListbox
インデックスに関連付けることができることを意味します。 IはすでにCombobox
3がブランクにリセットされるべきであったListbox
次いでListbox
インデックス5、インデックス4にCombobox
インデックス3を選択した場合、各Combobox
文字列は一度だけListbox
、すなわち設定することができればそのため、私はたいです。私はおそらくCombobox
変更されたイベントを通過し、同じ文字列の場合は他のComboboxes
をリセットします。
サンプル
OK以下の結合作品そう。
<Window.Resources>
<DataTemplate x:Key="lbxHeaderDataTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Label Content="{Binding Item1}"></Label>
<ComboBox Name="cbxTest" Grid.Column="1" ItemsSource="{Binding
Item2}" DisplayMemberPath="Key"></ComboBox>
</Grid>
</DataTemplate>
</Window.Resources>
<StackPanel Width="auto" Height="auto">
<ListBox Name="lbxFields"
ItemTemplate="{DynamicResource lbxHeaderDataTemplate}"
HorizontalContentAlignment="Stretch">
</ListBox>
</StackPanel>
C#
private List<KeyValuePair<string, int>> cbxOptions2 = new List<KeyValuePair<string, int>>();
cbxOptions2.Add(new KeyValuePair<string, int>("", 0));
cbxOptions2.Add(new KeyValuePair<string, int>("Identifier", 0));
cbxOptions2.Add(new KeyValuePair<string, int>("Family Identifier", 0));
cbxOptions2.Add(new KeyValuePair<string, int>("File Path", 0));
for (int i = 0; i < 10; i++)
{
lbxDatFields.Items.Add(new Tuple<string, List<KeyValuePair<string, int>>>((i * 10).ToString(), cbxOptions2));
}