MVVM listview复选框,可在选中时选择项目

时间:2018-12-05 15:01:27

标签: c# wpf xaml mvvm

我在MVVM的列表视图中使用了一个复选框。我将复选框的“ IsChecked”属性绑定到所选项目的模型属性,以便我知道记录是处于活动状态还是处于非活动状态。每当用户选中此框时,我都需要将此状态保存到数据库中,因此我需要选定的项目来收集详细信息,以使用命令保存更改。

如果用户选择记录,然后选中或取消选中复选框,则所选项目将作为命令参数传递,并且将按预期工作。我的问题是,当用户只是选中或取消选中复选框而没有选择项目时。然后,command参数为null,或者如果选择了其他选项,则传递错误的选择项。如何获得用于选择项目的复选框,以便始终将正确的所选项目传递到命令参数中?

列表视图中使用的复选框...

<CheckBox IsChecked="{Binding IsActive, Mode=TwoWay}"                                         
          Command="{Binding RelativeSource={RelativeSource FindAncestor,
             AncestorType={x:Type Window}}, Path=DataContext.ChangeCheckedHomePlayerCmd}" 
          CommandParameter="{Binding ElementName=homeListBox, Path=SelectedItem}">
</CheckBox>    

1 个答案:

答案 0 :(得分:1)

要将相应项目作为private static string SplitIntoChunks(string text, int maxWidth) { var sb = new StringBuilder(text); for (int i = 1; i < (sb.Length / maxWidth); i++) { int insertPosition = i * maxWidth + i - 1; sb.Insert(insertPosition, "\n"); } return sb.ToString(); } var splitIntoChunks = SplitIntoChunks(FileContent, 34); using (engine.BeginReadString(splitIntoChunks)) { // The engine is IEnumerable foreach (dtoRARecord detail in engine) { // your code here raRecords.Add(detail); } } Assert.AreEqual(4, raRecords.Count()); 传递,您只需执行此操作

CommandParameter