2011-04-13 164 views
3

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

任何想法或指针?

UPDATE:
所以另外一个问题,我有是,我怎样才能到控件中有问题的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> 

BoolToVisibilityConverter对于ListViewItemIsSelected属性的转换器然后确定ListViewItem的Visibility

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

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

回答

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

+0

+1上附加的行为良好的通话。一点点学习曲线,特别是如果你不习惯定义你自己的依赖属性,但有一套LeftClick/RightClick/DoubleClick属性,你可以从任何元素绑定到任何你喜欢的ICommand。 [这是另一个链接](http://paul-taylor.co.uk/blog/post/2011/03/06/Attached-behaviour-for-double-click.aspx),可以帮助你避免一些陷阱。 – 2011-04-13 16:49:45

+0

@djacobson是的,关于学习曲线是真的,但是一旦你明白了,那真是太棒了:)这对于构建干净的WPF MVVM应用程序是必须的 – Bruno 2011-04-13 16:57:25