ListView 控件最常用的事件是 SelectionChanged;如果采用 MVVM 模式來設(shè)計 WPF 應(yīng)用,通常,我們可以使用行為(如 InvokeCommandAction)并結(jié)合命令來實現(xiàn)對該事件的響應(yīng);如果我們要實現(xiàn)對 ListViewItem 雙擊事件的響應(yīng)——也就是說,雙擊 ListView 中的某一項——又該怎么做呢?
首先, ListView 并沒有提供相關(guān)的事件;其次,ListViewItem 雖然有 PreviewMouseDoubleClick(隧道事件),然而在 UI 中,我們卻沒有適合的方法來調(diào)用。那么究竟有沒有辦法來解決這個問題呢?答案肯定是有,以下便是兩種解決方案。第一種是相對簡單,在 DataTemplate 中使用 MouseBinding;第二種方法是通過附加屬性,相比第一種略為復(fù)雜一些。來看代碼:
方法一:
<ListView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Name}"> <TextBlock.InputBindings> <MouseBinding Command="{Binding DataContext.ShowInfoCommand, ElementName=window}" MouseAction="LeftDoubleClick" /> </TextBlock.InputBindings> </TextBlock> </DataTemplate></ListView.ItemTemplate>
可以看到,在上述代碼中,我們添加了
網(wǎng)友評論