のリストを表示したいのですがComboBoxes
、それぞれComboBox
がその親からマスター リストを取得しDataContext
ますが、その値はのリストを駆動するリストにバインドされていますComboBoxes
基本的に、アイテムのマスター リスト ( AvailableRegisters
) があります。Register
次に、基本的に現在選択されているsに相当する ComboBoxes のリストを表示します
機能するもの
- あたりの ComboBoxes の正しい数を確認できます
SelectedRegisters
うまくいかないこと
CollectionChanged
コンボボックスから別の項目を選択しても、イベントを受け取りません
ViewModelコード:これ
が私の(短縮された)ViewModel
コードです
public class DialogViewModel : ViewModelBase
{
public ObservableCollection<IOViewModel> InputOutputList { get; set; }
public ObservableCollection<AvailableRegister> AvailableRegisters { get; set; }
}
public class IOViewModel
{
public ObservableCollection<AvailableRegister> SelectedRegisters { get; set; }
public IOViewModel()
{
this.Registers = new ObservableCollection<AvailableRegister>();
this.Registers.CollectionChanged += Registers_CollectionChanged;
}
void Registers_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
// Never hit when changing combo box
}
}
XAML
<ItemsControl Grid.Column="4" ItemsSource="{Binding SelectedRegisters, Mode=TwoWay}" ItemTemplate="{StaticResource ItemTemplate}"></ItemsControl>
<DataTemplate x:Key="ItemTemplate">
<ComboBox SelectedValue="{Binding Path=DataContext, RelativeSource={RelativeSource Self},Mode=TwoWay}" ItemsSource="{Binding DataContext.AvailableRegisters, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate><!-- Display it here --></DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</DataTemplate>