我需要做什么才能在WPF中获取ListView的选择行为以赶上WinForms?

时间:2014-02-12 20:16:22

标签: wpf listview multipleselection

我试图激活或实施基本上有两件事:

1。单击背景时清除选择:

通常,当单击列表视图类型控件(例如Windows资源管理器)的空白区域时,任何选定的项目都将被取消选中。在多重或扩展选择模式下,这种情况不会发生。我是否必须手动处理鼠标单击事件以清除选择,或者它是否可能没有按预期运行,因为我已将背景应用于控件?

2。具有自动滚动的选择矩形:

在将我的应用程序移植到WPF之前,标准的WinForms列表视图允许我拖动一个选择矩形,它将选择它相交的任何项目。如果在任何方向上滚动出视图的项目,在该方向上拖动将导致控件在拖动鼠标时自动滚动到该区域,因此我可以选择不在视图中的项目。 WPF ListView是否实现了此功能,或者我将不得不自己实现它?有人在本页的评论中发布了一个涉及到测试的非平凡实现(http://social.msdn.microsoft.com/Forums/vstudio/en-US/191af722-e32b-4e6d-a00b-9ad2b53ea3b9/listview-dragging-a-selection-box-around-items?forum=wpf),但它甚至不支持自动滚动,我很难相信微软只是将此功能用完了。

1 个答案:

答案 0 :(得分:-2)

Really ListView没有默认外观,您必须使用触发器设置甚至基本选择 哇,这个颜色并显示没有单一样式或触发器的SelectedIndex 全部在XAML

<Window.Resources>
    <sys:String x:Key="MyString">Hello</sys:String>
    <x:Array x:Key="MyStringArray" Type="sys:String">
        <sys:String>Hello</sys:String>
        <sys:String>World</sys:String>
        <sys:String>Continent</sys:String>
        <sys:String>Universe</sys:String>
    </x:Array>
</Window.Resources>
<Grid>
    <StackPanel Orientation="Vertical">
        <ListView ItemsSource="{StaticResource MyStringArray}" x:Name="lv" SelectionMode="Single"  LostFocus="lv_LostFocus">
        </ListView>
        <TextBlock Text="{Binding ElementName=lv, Path=SelectedIndex}" />
        <Button Content="Take Focus"/>
    </StackPanel>
</Grid>

    private void lv_LostFocus(object sender, RoutedEventArgs e)
    {
        lv.SelectedIndex = -1;
    }