将“ SelectedItems”依赖项属性绑定到ViewModel属性不起作用

时间:2019-08-07 08:46:55

标签: wpf data-binding combobox dependency-properties

我有一个多选Combobox用户控件和一个依赖项属性“ SelectedItems”。 我试图使用用户控件并将“ SelectedItems”绑定到我的ViewModel中另一个名为“ SelectedResultItems”的属性。但是我没有对SelectedResultItems获得任何值。请帮助

这是我尝试过的。

我的主要xaml:

    <DataTemplate x:Key="TypeATemplate">
<control:MultiSelectComboBox Width="315" ItemsSource="{Binding 
ResultvalueList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" 
SelectedItems="{Binding 
SelectedResultItems,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>

后面的我的Combobox用户控制代码:

public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register("SelectedItems", 
typeof(ObservableCollection<string>), typeof(MultiSelectComboBox), new 
FrameworkPropertyMetadata(null,new 
PropertyChangedCallback(MultiSelectComboBox.OnSelectedItemsChanged)));

public ObservableCollection<string> SelectedItems
{
get { return 
(ObservableCollection<string>)GetValue(SelectedItemsProperty); }
set
{
SetValue(SelectedItemsProperty, value);
}
}

我要在选中复选框时设置“ SelectedItems”。

我的主视图模型:

public ObservableCollection<string> SelectedResultItems
{
get => _selectedResultItems;
set
{
_selectedResultItems = value;
NotifyPropertyChanged(nameof(SelectedResultItems));
}
}

1 个答案:

答案 0 :(得分:0)

如果这与ListView相同(从未使用过MultiSelectCombobox),则不能绑定到SelectedItems,因为它是只读属性。

我要解决的问题是将事件SelectionChanged添加到ListView(或为您选择MultiSelectCombobox)。

那么事件将是:

private void YourComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
   {
      contexte.ResultItems = YourComboBox.SelectedItems.Cast<YourItem>().ToList();
   }

也许有另一种方法可以做到这一点,但是直到现在,这是我发现的最简单的方法。