2012-06-29 53 views
1

我在應用程序的用戶界面中有一個列表,我想在用戶單擊列表中的某個項目時打開一個彈出窗口。據我所知,ListViewItem沒有Click事件,這將幫助我。 SelectionChanged事件也不起作用,因爲用戶可以關閉彈出窗口,我希望能夠再次打開它,而不需要他們先選擇列表中的不同項目。如何在用戶單擊ListViewItem時獲取要觸發的事件或命令?

這是我ListView創建代碼是什麼樣子,對於它的價值:

<ListView x:Name="_resultsListView" 
      ItemsSource="{Binding AvailableResults}" 
      SelectedItem="{Binding SelectedResult}" 
      ItemContainerStyle="{StaticResource LoadResultItemStyle}" 
      VirtualizingStackPanel.IsVirtualizing="True" 
      Style="{DynamicResource DefaultListViewStyle}" BorderThickness="0"/> 

謝謝!任何建議,將不勝感激。

回答

0

放入ItemTemplate(或ListViewItem.Template通過ItemContainerStyle臺)Button並將其綁定到一個命令,你可以風格它是無形的,如果需要的話。

+0

的一個問題是,當我點擊按鈕,該項目不會被選中。有沒有辦法讓按鈕來觸發它的命令,也有選擇ListViewItem? – Greg

+0

@Greg您可以使用Trigger根據「IsKeyboardFocusWithin」設置「IsSelected」。有關更多詳細信息,請參見[我的答案](http://stackoverflow.com/a/6752690/302677) – Rachel

1

什麼HB suggested作品,雖然我找到結合EventsCommands一個更永久的解決方案是使用一種AttachedCommandBehavior,可以讓您將一個命令到幾乎任何情況下

<Style TargetType="{x:Type ListViewItem}"> 
    <Setter Property="local:CommandBehavior.Event" Value="Click" /> 
    <Setter Property="local:CommandBehavior.Command" Value="{Binding DataContext.MyCommand, ElementName=MyListView}" /> 
    <Setter Property="local:CommandBehavior.CommandParameter" Value="{Binding }" /> 
</Style> 
相關問題