可编辑的WPF ListView

时间:2011-04-13 16:31:44

标签: c# wpf listview .net-3.5

当用户双击某个项目时,我想要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>

BoolToVisibilityConverterIsSelected的{​​{1}}属性的转换器,然后确定ListViewItem的ListViewItem

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

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