【问题标题】:Binding 'SelectedItems' dependency property to ViewModel property does not work将“SelectedItems”依赖属性绑定到 ViewModel 属性不起作用
【发布时间】:2019-12-14 20:31:08
【问题描述】:

我有一个多选组合框用户控件和一个依赖属性“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));
}
}

【问题讨论】:

  • OnSelectedItemsChanged 回调中,您是否在新集合实例上注册了一个CollectionChanged 事件处理程序。例如,像这样:stackoverflow.com/a/15023687/1136211
  • 不,我没有那样做。

标签: wpf data-binding combobox dependency-properties


【解决方案1】:

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

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

那么事件将是:

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

也许有一种不同的方法可以做到这一点,但到目前为止,这是我发现的最简单的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多