我想在用户双击某个项目时编辑一个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
对于ListViewItem
的IsSelected
属性的转换器然后确定ListViewItem的Visibility
。
正如您可以从当前的XAML标记中看到的,编辑控件将在项目选择中激活(变为可见),而不是项目双击。
更新2: 到目前为止,所有的建议都让我看到了解决方案的一半。有没有人有一个可行的解决方案,如何访问我需要使可见/不可见的实际控制?我会将该答案标记为解决方案!
+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
@djacobson是的,关于学习曲线是真的,但是一旦你明白了,那真是太棒了:)这对于构建干净的WPF MVVM应用程序是必须的 – Bruno 2011-04-13 16:57:25