将 'SelectedItems' 依赖项 属性 绑定到 ViewModel 属性 不起作用
Binding 'SelectedItems' dependency property to ViewModel property does not work
我有一个多选组合框用户控件和一个依赖项 属性 '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>
我后面的组合框用户控件代码:
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));
}
}
如果这与 ListView 相同(从未使用过 MultiSelectCombobox),则无法绑定到 SelectedItems
,因为它是只读的 属性.
我解决这个问题的方法是将事件 SelectionChanged 添加到 ListView(或为您提供 MultiSelectCombobox)。
那么事件将是:
private void YourComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
contexte.ResultItems = YourComboBox.SelectedItems.Cast<YourItem>().ToList();
}
也许有不同的方法,但到目前为止,这是我找到的最简单的方法。
我有一个多选组合框用户控件和一个依赖项 属性 '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>
我后面的组合框用户控件代码:
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));
}
}
如果这与 ListView 相同(从未使用过 MultiSelectCombobox),则无法绑定到 SelectedItems
,因为它是只读的 属性.
我解决这个问题的方法是将事件 SelectionChanged 添加到 ListView(或为您提供 MultiSelectCombobox)。
那么事件将是:
private void YourComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
contexte.ResultItems = YourComboBox.SelectedItems.Cast<YourItem>().ToList();
}
也许有不同的方法,但到目前为止,这是我找到的最简单的方法。