当用户双击某个项目时,我想要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>
BoolToVisibilityConverter
是IsSelected
的{{1}}属性的转换器,然后确定ListViewItem的ListViewItem
。
从当前的XAML标记中可以看出,编辑控件将在项目选择时激活(变为可见),而不是项目双击。
更新2: 到目前为止,所有的建议只能使我解决方案的一半。有没有人有一个可行的解决方案,如何访问我需要使可见/不可见的实际控件?我会将答案标记为解决方案!
答案 0 :(得分:1)
指针:
WPF ListView: Attaching a double-click (on an item) event
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/3d0eaa54-09a9-4c51-8677-8e90577e7bac/
Get the item doubleclick event of listview
http://kevin-berridge.blogspot.com/2008/06/wpf-listboxitem-double-click.html
对于MVVM,
Firing a double click event from a WPF ListView item using MVVM
答案 1 :(得分: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