Nhu*_*yen 13 c# wpf binding wpf-controls
我有这个代码:
<ListView Height="238"
HorizontalAlignment="Left"
Name="listView1"
VerticalAlignment="Top"
Width="503"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding ID}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding ID}" Header="ID" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)

我如何知道选中了多少个复选框,并获取所选复选框的值标签?
Fra*_*nck 20
我知道它已经老了,但是对于后人来说,如果人们在这里发茬就是解决方案
<ListView Height="238"
HorizontalAlignment="Left"
Name="listView1"
VerticalAlignment="Top"
Width="503"
ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True"
SelectionChanged="listView1_SelectionChanged">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox Tag="{Binding ID}" IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding ID}" Header="ID" />
<GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" />
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)
然后在listView1_SelectionChanged中的cs文件代码中
private List<MyObject> lstMyObject = new List<MyObject>();
private void listView1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
foreach (MyObject item in e.RemovedItems)
{
lstMyObject.Remove(item);
}
foreach (MyObject item in e.AddedItems)
{
lstMyObject.Add(item);
}
}
Run Code Online (Sandbox Code Playgroud)
lstMyObject应该与绑定到列表的对象的类型相同.并且代码将简单地添加和删除对该列表的原始列表的项目的引用.
现在你要做的就是遍历那个只包含实际选中项目的列表.这仅适用于单个选择,除了lstMyObject将始终只包含1个记录.
它应该像在ViewModel上绑定IsChecked属性的属性一样简单CheckBox(如果新属性尚不存在,则可能需要添加它).然后,一旦单击该按钮,您将只迭代集合中的所有项目,并删除已检查的项目(基于ViewModel上的属性值).