WPF ListView控件的SelectedItem为null [英] WPF ListView SelectedItem is null

查看:211
本文介绍了WPF ListView控件的SelectedItem为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有都有一个复选框作为一个列列表视图。如果我点击任何地方,但实际的复选框的ListView的的SelectedItem设置为当前选定行,符合市场预期。如果,另一方面,我点击到该复选框(不点击该行第一),那么的SelectedItem为空或previously点击一行。

谁能帮我......

干杯

 < ListView的宽度=自动的SelectionMode =单X:NAME =列表框的ItemsSource ={结合迈德特}的SelectedItem ={绑定路径= SelectedMyData} >
                        < ListView.View>
                            <&GridView的GT;
                                < GridViewColumn标题=日期WIDTH =120>
                                    < GridViewColumn.CellTemplate>
                                        <&DataTemplate的GT;
                                            <内容presenter风格={StaticResource的DateTimeContent}CONTENT ={结合数值指明MyDate}/>
                                        < / DataTemplate中>
                                    < /GridViewColumn.CellTemplate>
                                < / GridViewColumn>
                                < GridViewColumn标题=是正确的WIDTH =100>
                                    < GridViewColumn.CellTemplate>
                                        <&DataTemplate的GT;
                                            <复选框IsThreeState =FALSE
                                                      选中=OnChkChecked
                                                      未选中=OnChkChecked
                                                      =器isChecked{结合IsCorrect}>< /复选框>
                                        < / DataTemplate中>
                                    < /GridViewColumn.CellTemplate>
                                < / GridViewColumn>
                            < / GridView的>
                        < /ListView.View>
                    < /&的ListView GT;
                                    < GridViewColumn.CellTemplate>
                                        <&DataTemplate的GT;
                                            <复选框IsThreeState =FALSE
                                                      选中=OnChkChecked
                                                      未选中=OnChkChecked
                                                      =器isChecked{结合IsCorrect}>< /复选框>
                                        < / DataTemplate中>
                                    < /GridViewColumn.CellTemplate>
                                < / GridViewColumn>
                            < / GridView的>
                        < /ListView.View>
                    < /&的ListView GT;


解决方案

这很容易,只需处理你的复选框,点击事件:

 私人无效CheckBox_Click(对象发件人,RoutedEventArgs E){
    变种CB =发件人为复选框;
    VAR项目= cb.DataContext;
    myListView.SelectedItem =项目;
}

I have a Listview that has a checkbox as one of the columns. If I click anywhere but the actual checkbox the SelectedItem of the ListView is set to the current selected row, as expected. If, on the other hand I click onto the checkbox (without clicking on the row first) then the SelectedItem is null or the previously clicked row.

Can anyone help me out....

Cheers

<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>

解决方案

It's very easy, just handle Click event on your checkbox:

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

这篇关于WPF ListView控件的SelectedItem为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆