2012-06-29 22 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> 
相关问题