2013年3月22日金曜日

[WPF]Listアイテムのコンテキストメニューのコマンドバインディング(MVVM)

DataGrid でも ListView でも ListBox でも当てはまると思うけど、行を右クリックしてViewModel に記述されたコマンドをキックするにはちょっとコツが必要。

普通にバインドさせると、ListItem の ViewModel にバインドしようとしてしまうからみたい。

わかってしまえば簡単。
Windowまで遡れば、DataContext に ViewModel が入ってるんで、コマンドまで辿れる。


    <Window.DataContext>
        <local:MainViewModel />
    </Window.DataContext>


            <ContextMenu x:Key="execMenu">
                <MenuItem Header="実行"  Command="{Binding Path=DataContext.ExecuteCommand, 
                                                                             RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"/>
            </ContextMenu>

0 件のコメント:

コメントを投稿