Я немного новичок в связывании команд, так что это может быть тривиальным вопросом для многих.Я знаю, что мы можем добавить привязки команд в xaml окна и дать его соответствующее свойство в viewmodel.Эта модель представления будет передана в DataContext окна.Примерно так:
- app.xaml.cs
mainWindow.DataContext = viewModel;
- xaml
lt;Button Grid.Row="1" HorizontalAlignment="Right" Margin="0,3,18,3" Name="button1" Width="110"
Command="{Binding LoadCommand}">_Load</Button>
- viewmodel
/// <summary>
/// Gets the load command.
/// </summary>
/// <value>The load command.</value>
public ICommand LoadCommand
{
get
{
if (m_LoadCommand == null)
{
m_LoadCommand = new RelayCommand(param => CanLoad(), param => Load());
}
return m_LoadCommand;
}
}
Здесь relaycommand - это класс, который реализует интерфейс ICommand.CanLoad () и Load () - это методы, которые будут выполняться для canexecute и выполнять действие relaycommand соответственно.Это событие нажатия кнопки, которая обрабатывается.
У меня есть пользовательский элемент управления, в котором зарегистрирован пользовательский маршрутный прием, и пользовательский элемент управления затем используется в окне.В настоящее время я добавляю обработчик событий явно в код.
//hook up event listeners on the actual UserControl instance
this.ucCustomEvent1.CustomClick += new RoutedEventHandler(ucCustomEvent_CustomClick);
//hook up event listeners on the main window (Window1)
this.AddHandler(UserControlThatCreatesEvent.CustomClickEvent, new RoutedEventHandler(ucCustomEvent_CustomClick));
Я не хочу явно подключать routedevent в коде, но в xaml так же, как в примере кнопки.Я загрузил рабочий пример кода здесь для вашего ознакомления.