簡體   English   中英

ListView中的WPF,MVVM,EventBehaviourFactory,將事件綁定到命令

[英]WPF, MVVM, EventBehaviourFactory in ListView, binding event to command

我基本上是嘗試遵循http://blog.functionalfun.net/2008/09/hooking-up-commands-to-events-in-wpf.html策略,將事件綁定到命令。

我有一個ListView,我想在其中雙擊一行來啟動ICommand的實例。 ListView或ListBoxItem上面沒有Command屬性。 這個問題(看來)是通過使用附加屬性解決的,但是我個人仍然無法弄清楚如何在ListView上使用它。

我有一個“信號”集合,每個都有一個“名稱”屬性。 以下是我的xaml的一部分。

            <ListView ItemsSource="{Binding Signals}" >
                <ListBox.ItemContainerStyle>
                    <Style TargetType="{x:Type ListBoxItem}">
                        <Setter Property="{models:ListBoxItemBehaviour.DoubleClickCommand}" Value="{Binding Command1}" />
                    </Style>
                </ListBox.ItemContainerStyle>
                <ListView.View>
                   <GridView>
                      <GridViewColumn Header="Signal" DisplayMemberBinding="{Binding Name}" />
                   </GridView>
               </ListView.View>
           </ListView>

這行不通。 ListBoxItemBehaviour是行為的實現,通過上面的鏈接,它鈎在ListBoxItem.MouseDoubleClickEvent事件上。

我懷疑上面的錯誤很小,但對我來說並不明顯。 有什么建議么?

第一個錯誤是:“不支持嵌套類型:”。

ListView ,可以使用InputBindings在其上獲取鼠標和鍵盤輸入。

要將MouseDoubleClick綁定到可以使用的命令

<ListView.InputBindings>
   <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding ListViewDoubleClickCommand}"/>
</ListView.InputBindings>

好吧,因為我無法找到合適的解決方案,但是工作就是工作,所以我犧牲了MVVM模式的純度而不是可操作性。

將此事件添加到xaml

<EventSetter Event="MouseDoubleClick" Handler="HandleDoubleClick" /> 

和處理程序在后面編碼

    protected void HandleDoubleClick(object sender, MouseButtonEventArgs e)
    {
        MyViewModel mvm = this.DataContext as MyViewModel;

        mvm.MyCommand.Execute();
    }

因此,雙擊視圖列表中的項目將觸發命令。 不漂亮,但可以。 如果我找到合適的純MVVM解決方案,我將發布它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM