我想在用戶雙擊某個項目時編輯一個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