2012-05-19 67 views
0

我宣佈像這樣我的模板 -命令沒有行級文本菜單上的DataGrid中的WPF C#執行

<DataGrid.Resources> 

    <ContextMenu x:Key="RowMenu" DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"> 
     <MenuItem Header="Remove" Command="{Binding Cancel}" /> 
    </ContextMenu> 

</DataGrid.Resources> 

我用行樣式應用模板 -

<DataGrid.RowStyle> 

    <Style TargetType="DataGridRow"> 
     <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" /> 
    </Style> 

</DataGrid.RowStyle> 

菜單顯示高達OK

但命令(在ItemListViewModel)上下文菜單項被點擊

0123時,不執行

我的綁定,否則正常工作,因爲我可以做這樣的事情 -

foreach (ItemListViewModel ul in mylist.SelectedItems) 
     MessageBox.Show(item.FullDescription); 

我一直在徹夜狂歡試圖弄明白。今天剛剛開始使用WPF。

請有人告訴我,我已經走了錯

回答

0

我不認爲你可以綁定到一個簡單的方法。您需要綁定到一個應該是實現接口的命令。在你的情況下,你需要創建一個實現該接口的類,並將該類的屬性添加到模型中。

見這個例子作爲參考:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

+0

但我這樣做了其他綁定,有什麼不同? – NoPyGod

+0

您可以將命令綁定到某個方法? –

0

我決定ListView控件是爲我的需求更好的,我使用的是代替。我不再試圖將上下文菜單綁定到該項目,而是爲整個列表視圖設置一個上下文菜單,只需在需要的情況下啓用或禁用ContextMenuOpen事件中的項目即可。