可编辑的WPF ListView

3
我希望在用户双击某个项目时,使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属性的转换器,它决定了ListViewItemVisibility。根据当前的XAML标记,编辑控件将在选择项目时激活(变为可见),而不是在双击项目时激活。 更新2: 到目前为止,所有的建议只让我完成了解决方案的一半。有没有人能提供一个可行的解决方案,来让我访问需要设置为可见/不可见的实际控件?我会把那个答案标记为解决方案!
2个回答


1

+1 对于附加行为的明智调用。有点学习曲线,特别是如果你不习惯定义自己的Dependency Properties,但拥有一组可以从任何元素绑定到任何你喜欢的ICommand的LeftClick/RightClick/DoubleClick属性非常好。这是另一个链接,可能会帮助您避免一些陷阱。 - Dan J
@djacobson 是的,学习曲线确实有点陡峭,但是一旦掌握了,就会感觉非常棒 :) 并且,这对于构建干净的 WPF MVVM 应用程序来说是必不可少的。 - Bruno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接