Привязка команды Menuitem к ViewModel в UserControl, расположенном в окнеC#

Место общения программистов C#
Ответить
Anonymous
 Привязка команды Menuitem к ViewModel в UserControl, расположенном в окне

Сообщение Anonymous »

У меня есть окно с сеткой: CentralView — это пользовательский элемент управления с DataGrid и DataGrid ContextMenu. Кроме того, у меня есть простой класс, реализующий интерфейс ICommand, и статический класс Command, в котором хранятся все команды:

Код: Выделить всё

static CentralViewBaseCommands _goToEti;
public static CentralViewBaseCommands GoToEti => _goToEti ?? new

CentralViewBaseCommands(GoToExternalWindow);
private static void GoToExternalWindow(object obj)
{
if (obj is GridContextMenuInfo)
{
object record = (obj as GridRecordContextMenuInfo)?.Record;
CentralDataGridModel mwSfDgModel = (CentralDataGridModel)record;

if (mwSfDgModel != null)
{
//TODO
}
}
}
CentralViewBaseCommands:

Код: Выделить всё

public class CentralViewBaseCommands : ICommand
{
private Action _execute;
private Predicate _canExecute;

public CentralViewBaseCommands(Action execute) : this(execute, null)
{
_execute = execute;
}

public CentralViewBaseCommands(Action execute,Predicate canExecute)
{
if (execute == null)
throw new ArgumentNullException(nameof(execute));
_execute = execute;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
return _canExecute?.Invoke(parameter) ?? true;
}

public void Execute(object parameter)
{
_execute(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
Код MenuItem следующий (который находится в UserControl):

Код: Выделить всё






Height="26"
Margin="0,0,0,0"

Fill="#FFFF0000"
RenderTransformOrigin="0.5,0.5"
Stretch="Uniform">














Итак, проблема в следующем. Когда я нажимаю на команду пункта меню, она выполняется, как я и ожидал, но если я привязываю команду к команде в UserControl ViewModel (DelegateCommand) Command="{Binding CommandInViewModel}", ничего не происходит и команда не выполняется .
Может кто-нибудь объяснить мне, почему?


Подробнее здесь: https://stackoverflow.com/questions/383 ... -in-window
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»