【问题标题】:Editable WPF ListView可编辑的 WPF 列表视图
【发布时间】:2011-08-04 21:11:36
【问题描述】:

当用户双击某个项目时,我想让ListView 可编辑。我意识到网上有很多示例,但是,这些都是基于IsSelected 属性,而不是处理双击事件。

有什么想法或建议吗?

更新:
因此,我遇到的另一个问题是,我如何才能访问有问题的ListViewitem 的数据模板中的控件?我迷路的地方是我需要进入控件,并根据项目是否正在编辑来启用或禁用控件。

目前,ListView 数据模板如下所示:

<DataTemplate>
    <Grid>
        <TextBlock Width="180" Text="{Binding Path=Description}"
              Style="{StaticResource GridBlockStyle}" />
         <TextBox Width="180" Text="{Binding Path=Description}" 
              Style="{StaticResource GridEditStyle}" />
    </Grid>
</DataTemplate>

被引用的样式如下所示:

<Window.Resources>
    <Style TargetType="{x:Type TextBlock}" x:Key="GridBlockStyle">
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Visibility" Value="{Binding Path=IsSelected,
             RelativeSource={RelativeSource FindAncestor, 
             AncestorType={x:Type ListViewItem}}, 
             Converter={StaticResource boolToVis}, 
             ConverterParameter=False}" />
    </Style>
    <Style TargetType="{x:Type FrameworkElement}" x:Key="GridEditStyle">
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="Visibility" Value="{Binding Path=IsSelected, 
            RelativeSource={RelativeSource FindAncestor,
            AncestorType={x:Type ListViewItem}},
            Converter={StaticResource boolToVis},
            ConverterParameter=True}" />
    </Style>
</Window.Resources>

BoolToVisibilityConverterListViewItemIsSelected 属性的转换器,它决定了ListViewItem 的Visibility

从当前的 XAML 标记中可以看出,编辑控件将在项目选择时激活(变得可见),而不是在项目双击时。

更新 2: 到目前为止,所有的建议都让我只找到了一半的解决方案。有没有人有一个可行的解决方案来访问我需要使其可见/不可见的实际控件?我会将该答案标记为解决方案!

【问题讨论】:

    标签: c# wpf listview .net-3.5


    【解决方案1】:

    如果您处于 MVVM 模式,您可能希望查看 AttachedProperties 和行为而不是事件处理程序,以避免在您的代码中编写代码。

    http://www.codeproject.com/KB/WPF/AttachedBehaviors.aspx

    http://blog.fossmo.net/post/How-to-create-an-attached-property-in-WPF-using-a-ComboBox.aspx

    http://msdn.microsoft.com/en-us/library/ms749011.aspx

    【讨论】:

    • +1 对附加行为的良好呼吁。一点点学习曲线,特别是如果您不习惯定义自己的依赖属性,但是拥有一组 LeftClick/RightClick/DoubleClick 属性,您可以将任何元素绑定到您喜欢的任何 ICommand 上。 Here's another link 这可能会帮助您避免一些陷阱。
    • @djacobson 是的,学习曲线确实如此,但是一旦你掌握了它,那就太好了:) 这是构建干净的 WPF MVVM 应用程序的必备条件
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多