2017-06-19 67 views
0

我有一个带有复选框的ListView。但有时候,当我检查复选框时,其他选中的复选框会被取消选中。我找不到,问题在哪里。带有复选框的WPF ListView取消选中

将不胜感激任何帮助。

这里是XAML代码:

<ListView ItemsSource="{Binding SeatCars}" SelectionChanged="SeatSelectionChanged"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <CheckBox Content="{Binding}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}"></CheckBox> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

这里是事件处理程序:

private void SeatSelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    foreach (var item in e.AddedItems) 
    { 
     MainViewModel.SeatSelected.Add(item.ToString()); 
    } 
    foreach (var item in e.RemovedItems) 
    { 
     MainViewModel.SeatSelected.Remove(item.ToString()); 
    } 
} 

但问题仍然存在,即使没有事件处理程序。因为你的价值器isChecked的

+0

** SeatCars **内容是否保持不变?它是ObservableCollection吗?我试过一些小应用程序。但似乎没有能够重现您的问题,所以可能丢失了一些东西...... – Roman

回答

0

其...

这里是我的复选框设计,可以帮助你。

<CheckBox x:Name="CheckBoxZone" Content="{Binding TheText}" 
            Tag="{Binding TheValue}"  
            Margin="0,5,0,0" IsChecked="{Binding IsChkBox1Checked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
            Command="{Binding DataContext.OnCheckedCommand, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type StackPanel} }}" CommandParameter="{Binding ElementName=CheckBoxZone, Path=Tag}"> 
+0

这是由于Ischecked。谢谢你的帮助。 – bobo933

+0

欢迎您! – Lina