2011-04-13 168 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