none
关于ListView的选中问题 @Bob RRS feed

  • 问题

  • 在使用ListView的时候,遇到一个问题如下:

    在正常选中的时候(执行一次MouseDowm和MouseUp),边框是蓝色如图:

    在使用代码让它选中时,边框非此色,

    现在要想在使用代码选中它时,也是正常选中的蓝色,不知道该怎么做了,求大神指点


    Keep Moving.

    2012年2月9日 3:46

答案

  • 而且还有一个问题,因为的ListView是绑定了数据的(类型是MifContents),

    你的这个方法我试过,但是不管怎么取,ListViewItem的类型都MifContent,

    所以我就更设置不了Focus了,所以换了如上的方法。

    但是这个问题我也想请教下你,这个是怎么回事,还是我的数据绑定没做好么?


    Keep Moving.


    通过 ItemsControl.ItemContainerGenerator.ContainerFromItem 或者 ContainerFromIndex。 就可以拿到你的ItemContainer, ListViewItem 

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Mr.Brandy 2012年2月9日 9:48
    2012年2月9日 8:47
    版主

全部回复

  • 你先拿到ListViewItem后,先设置它的IsSelected = True 让他选中,然后你再调用 Focus() 方法让他获得焦点就好了。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年2月9日 7:51
    版主
  • 这样也行,我还以为要改控件模板

    其实在控件模板里,把IsSelected这个触发器去掉,也可以一劳永逸吧


    Hero

    2012年2月9日 8:10
  •  <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <Setter Property="Margin" Value="5"/>
                        <Setter Property="BorderBrush" Value="LightBlue"/>
                        <Setter Property="BorderThickness" Value="1"/>
                        <Style.Resources>
                            <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#96E5F4"/>
                            <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="#96E5F4"/>    //核心是这一句,就可以修改它非焦点时的颜色了,现在看了没有什么问题,但是不知道会不会出问题。
                        </Style.Resources>
                    </Style>
                </ListView.ItemContainerStyle>

    Keep Moving.

    2012年2月9日 8:30
  • 这样的话,会影响我的其他操作哦,不过还是谢谢

    Keep Moving.

    2012年2月9日 8:30
  • 而且还有一个问题,因为的ListView是绑定了数据的(类型是MifContents),

    你的这个方法我试过,但是不管怎么取,ListViewItem的类型都MifContent,

    所以我就更设置不了Focus了,所以换了如上的方法。

    但是这个问题我也想请教下你,这个是怎么回事,还是我的数据绑定没做好么?


    Keep Moving.

    2012年2月9日 8:33
  • 而且还有一个问题,因为的ListView是绑定了数据的(类型是MifContents),

    你的这个方法我试过,但是不管怎么取,ListViewItem的类型都MifContent,

    所以我就更设置不了Focus了,所以换了如上的方法。

    但是这个问题我也想请教下你,这个是怎么回事,还是我的数据绑定没做好么?


    Keep Moving.


    通过 ItemsControl.ItemContainerGenerator.ContainerFromItem 或者 ContainerFromIndex。 就可以拿到你的ItemContainer, ListViewItem 

    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Mr.Brandy 2012年2月9日 9:48
    2012年2月9日 8:47
    版主
  • 谢谢bao哥了哈

    Keep Moving.

    2012年2月9日 9:49