2010-10-22 38 views
0

我有以下的數據網格行的上下文菜單。DataGrid的ContextMenu

 <ContextMenu x:Key="cm_rowMenu"> 
      <!--ContextMenu For Row--> 
      <MenuItem Header="Edit Info." 
         Click="mnuEditInfo_Click" 
         /> 
      <MenuItem Header="Delete" 
         Click="mnuDeleteDevSoftware_Click" 
         /> 
      <MenuItem Header="Check In" 
         Click="mnuCheckIn_Click" 
         /> 
     </ContextMenu> 

     <Style x:Key="DefaultRowStyle" TargetType="{x:Type dg:DataGridRow}"> 
      <Setter Property="ContextMenu" Value="{StaticResource cm_rowMenu}" /> 
     </Style> 

但是,我想作以下修改:

我想設置基於dataGrid.SelectedItem的屬性,以啓用/禁用的菜單項。我該怎麼做呢 ?

最好的問候, MadSeb

回答

0

使用命令:

<ContextMenu x:Key="cm_rowMenu" DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}"> 
    <MenuItem Header="Edit Info." Command="{Binding EditCommand}"/> 
</ContextMenu> 
<Style x:Key="DefaultRowStyle" TargetType="{x:Type DataGridRow}"> 
    <Setter Property="ContextMenu" Value="{StaticResource cm_rowMenu}" /> 
</Style> 

模型行:

public class ItemModel 
{ 
    public ItemModel() 
    { 
     this.EditCommand = new SimpleCommand 
     { 
      ExecuteDelegate = _ => MessageBox.Show("Execute"), 
      CanExecuteDelegate = _ => this.Id == 1 
     }; 
    } 
    public int Id { get; set; } 
    public string Title { get; set; } 
    public ICommand EditCommand { get; set; } 
}