【发布时间】:2011-08-04 21:11:36
【问题描述】:
当用户双击某个项目时,我想让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 是ListViewItem 的IsSelected 属性的转换器,它决定了ListViewItem 的Visibility。
从当前的 XAML 标记中可以看出,编辑控件将在项目选择时激活(变得可见),而不是在项目双击时。
更新 2: 到目前为止,所有的建议都让我只找到了一半的解决方案。有没有人有一个可行的解决方案来访问我需要使其可见/不可见的实际控件?我会将该答案标记为解决方案!
【问题讨论】: