C# 如何将列表框所选项目分配给源属性
我希望在用户选择一个或多个项目时更新我的源属性。我已经尝试了绑定模式OneWayToSource,但这没有帮助。以下是XAML和ViewModel代码:C# 如何将列表框所选项目分配给源属性,c#,wpf,data-binding,mvvm,xaml-binding,C#,Wpf,Data Binding,Mvvm,Xaml Binding,我希望在用户选择一个或多个项目时更新我的源属性。我已经尝试了绑定模式OneWayToSource,但这没有帮助。以下是XAML和ViewModel代码: <ListBox x:Name="ItemsListBox" SelectionMode="Multiple" Height="300" ItemsSource="{Binding ResultSet}" SelectedItem="{Binding SelectedItems,Mode=One
<ListBox x:Name="ItemsListBox" SelectionMode="Multiple" Height="300"
ItemsSource="{Binding ResultSet}"
SelectedItem="{Binding SelectedItems,Mode=OneWayToSource}">
private List<string> _selectedItems;
public List<string> SelectedItems
{
get
{
return _selectedItems;
}
set
{
_selectedModeItems = value;
NotifyPropertyChanged("SelectedItems");
}
}
私人列表_selectedItems;
公共列表SelectedItems
{
得到
{
返回_selectedItems;
}
设置
{
_selectedModeItems=值;
NotifyPropertyChanged(“SelectedItems”);
}
}
我通过使用附加的行为采取了这种方法,它是有效的,但是有更简单的方法吗?WPF ListBox有两个与当前所选项目相关的属性:
- SelectedItem可用于绑定,绑定到第一个选定项
- SelectedItems(末尾带有“s”)不可用于绑定
<ListBox x:Name="ItemsListBox" SelectionMode="Multiple" Height="300"
ItemsSource="{Binding ResultSet}"
SelectionChanged="ListBox_SelectionChanged">
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (string item in e.RemovedItems)
{
SelectedItems.Remove(item);
}
foreach (string item in e.AddedItems)
{
SelectedItems.Add(item);
}
}
私有无效列表框\u SelectionChanged(对象发送方,SelectionChangedEventArgs e)
{
foreach(e.RemovedItems中的字符串项)
{
选择编辑项。删除(项);
}
foreach(e.AddedItems中的字符串项)
{
选择编辑项。添加(项);
}
}
你的问题应该是这样的
如何使用MVVM从WPF中的列表框中获取多个选定项
好的,您可以从下面的stackoverflow线程中得到答案
只需在ResultSet视图模型中定义
IsSelected
属性即可。然后,如果您想在任何时候获取所选项目,只需从结果集中获取“IsSelected”属性设置为true的项目。您还可以创建附加行为下面是一个操作方法NotifyPropertyChanged(“SelectedItems”);可能应更改NotifyPropertyChanged(“SelectedItems”);这只是编辑问题、更新问题时的拼写错误。ThanksGood One,如果您使用命令绑定更改了选择,则会将其标记为应答。将使用绑定更新代码,让我们看看。代码隐藏不是一个好主意