我有一个WinUI 3项目与Template Studio脚手架。具有多重选择模式的ListView。我使用MVVM,因此通过命令绑定到视图模型。当我改变列表中的选择时,程序会输入我的方法,这很好。但是我的参数是null。
当我更改列表中的选择以将元素发送到视图模型中的方法时,我该如何操作?CommandParameter="{Binding}"
可能是问题所在。
MyPage.xaml
<ListView
SelectionMode="Multiple"
ItemsSource="{x:Bind ViewModel.ValidationFlagsList, Mode=OneTime}"
SelectedValuePath="Key"
DisplayMemberPath="Value">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="SelectionChanged">
<core:InvokeCommandAction Command="{x:Bind ViewModel.FlagCheckBoxChangedCommand}" CommandParameter="{Binding}" />
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</ListView>
MyViewModel.cs
public IEnumerable<KeyValuePair<string, string>> ValidationFlagsList => EnumExtensions.GetAllValuesAndDescriptions<ValidationFlag>();
public ICommand FlagCheckBoxChangedCommand { get; }
ctor()
{
FlagCheckBoxChangedCommand = new RelayCommand<object>(FlagCheckBox_Changed);
}
private void FlagCheckBox_Changed(object validationFlag)
{
// Problem: method is called, but parameter is null
}
1条答案
按热度按时间gorkyyrv1#
您只需要删除
CommandParameter
,SelectionChangedEventArgs
将被传递给命令。然后在
SelectionChangedEventArgs
中,您将得到AddedItems
和RemovedItems
。顺便说一句,
ListView
有一个SelectedItems
属性,但它只是一个普通属性,而不是DependencyProperty
,所以不幸的是,你不能在绑定中使用它。这里有一个workaround如果你感兴趣。