2016-08-10 31 views
1

我查看relay命令不開火菜單項單擊

<Button.ContextMenu> 
    <ContextMenu x:Name="Conn_Context_button" Style="{StaticResource LeftContextMenuStyle}"> 
    <MenuItem Style="{StaticResource LeftContextMenuItemStyle}" Header="{x:Static properties:ResourceWrapper.Dashboard_Connection_Delete}" Click="MenuItem_DeleteConnection_Click" /> 
    <MenuItem Style="{StaticResource LeftContextMenuItemStyle}" Header="{x:Static properties:ResourceWrapper.Dashboard_Connection_Refresh}" Command="{Binding MyViewModel.RefreshCommand}" /> 
    </ContextMenu> 

MyViewModel.cs

public RelayCommand RefreshCommand { get; set; } 
    RefreshCommand = new RelayCommand(RefreshConnection); 
    private void RefreshConnection(object sender) 
    { 
     //My Logic 
    } 

這裏RefreshCommand不點火當我點擊刷新菜單項

+0

也許使用ICommand? – Whencesoever

+0

也許datacontext不正確,請檢查輸出中的綁定錯誤。如果'MyViewModel'是datacontext,'Command =「{Binding RefreshCommand}'將會解決這個問題。 – Natxo

+2

這不是那麼容易:試試這個http://stackoverflow.com/questions/9994241/mvvm-binding-command-to- contextmenu-item –

回答

0

作爲一個很好的例子,看看這個situation

下面是一段簡單的代碼從我目前projets的一個考慮:

private void PrepareCommands() 
{ 
    RefreshCommand = new RelayCommand(RefreshCommandMethod); 
    AddConfigurationCommand = new RelayCommand(AddConfigurationCommandMethod, param => CanAddConfiguration); 
    EditConfigurationCommand = new RelayCommand(EditConfigurationCommandMethod, param => CanEditConfiguration); 
    RemoveConfigurationCommand = new RelayCommand(RemoveConfigurationCommandMethod, param => CanRemoveConfiguration); 
} 

在命令

#region Commands 

public ICommand AddConfigurationCommand { get; set; } 
public ICommand EditConfigurationCommand { get; set; } 
public ICommand RemoveConfigurationCommand { get; set; } 
public ICommand RefreshCommand { get; set; } 

#endregion 

綁定是

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" DockPanel.Dock="Right"> 
    <Button Template="{StaticResource AddButton}" Command="{Binding AddConfigurationCommand}" Margin="3,0" /> 
    <Button Template="{StaticResource EditButton}" Command="{Binding EditConfigurationCommand}" Margin="3,0" /> 
    <Button Template="{StaticResource DeleteButton}" Command="{Binding RemoveConfigurationCommand}" Margin="3,0" /> 
</StackPanel> 

正如揚沃爾查克以上說,請嘗試使用ICommand而不是RelayCommand。如果您已經創建了自己的RelayCommand,請不要忘記從ICommand繼承。