c# - WPF ListView SelectedItem 为空

标签 c# wpf listview checkbox selecteditem

我有一个 ListView ,其中有一个复选框作为列之一。如果我单击实际复选框以外的任何地方,ListView 的 SelectedItem 将按预期设置为当前选定的行。另一方面,如果我单击复选框(没有先单击该行),则 SelectedItem 为空或之前单击的行。

谁能帮帮我....

干杯

<ListView Width="auto" SelectionMode="Single" x:Name="listBox"  ItemsSource="{Binding MyData}" SelectedItem="{Binding Path=SelectedMyData}">
                        <ListView.View>
                            <GridView>
                                <GridViewColumn Header="Date" Width="120">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <ContentPresenter Style="{StaticResource DateTimeContent}" Content="{Binding MyDate}"/>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Header="Is Correct" Width="100">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsThreeState="False" 
                                                      Checked="OnChkChecked"
                                                      Unchecked="OnChkChecked"
                                                      IsChecked="{Binding IsCorrect}"></CheckBox>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>




                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsThreeState="False" 
                                                      Checked="OnChkChecked"
                                                      Unchecked="OnChkChecked"
                                                      IsChecked="{Binding IsCorrect}"></CheckBox>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>

最佳答案

这很简单,只需处理复选框上的 Click 事件即可:

private void CheckBox_Click(object sender, RoutedEventArgs e) {
    var cb = sender as CheckBox;
    var item = cb.DataContext;
    myListView.SelectedItem = item;
}

关于c# - WPF ListView SelectedItem 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608187/

相关文章:

c# - 注释会减慢编译语言的速度吗?

wpf - 为什么第二个 UI 线程会卡住第一个?

.net - WPF MVVM Prism 应用程序中的内存泄漏

c# - 使用 GridViewColumn 创建 ListView

c# - 禁用 WCF 帮助页面不起作用

C# 问号运算符后缀为 cast

c# - 如何从 XElement 检索元素

c# - 如何使用复选框使文本框可见和隐藏?

c# - ListViewItem 覆盖默认样式打破 gridviews

android - ListView 替代颜色