У меня есть два разных элемента интерфейса в отдельных файлах: menuItem (в window.xaml) и userControl (в foo.xaml).Как использовать тот же RoutedCommand в отдельных элементах управления?
Оба имеют точно такую же логику: они включены только в том случае, если условие согласовано и вызывает тот же метод. Чтобы закодировать эту логику, я использую RoutedCommands.
я мог бы использовать 2 разных RoutedCommands в каждом файле с таким же условием в CanExecute и Выполненная. Оно работает.
Я хотел бы улучшить код, чтобы следить за D.R.Y. правила и экстернализировать routedCommand и приложенные методы. Это связывание в обоих файлах:
<CommandBinding Command="{x:Static RoutedCommands:TestRoutedCommand.test}"
Executed="RoutedCommands:TestRoutedCommand.OnTest"
CanExecute="RoutedCommands:TestRoutedCommand.CanTest" />
это TestRoutedCmmand.cs:
public class TestRoutedCommand
{
public static RoutedCommand test = new RoutedCommand();
public static void OnTest(object sender, ExecutedRoutedEventArgs e)
{
System.Windows.MessageBox.Show("test -on");
}
public static void CanTest(object sender, CanExecuteRoutedEventArgs e)
{
System.Windows.MessageBox.Show("test -can");
e.CanExecute = true;
}
}
Когда я делаю это, отчет составитель эта ошибка:
Error 1 unknown generation error, 'MC6005 :
Executed="RoutedCommands:TestRoutedCommand.OnTest" is not valid.
'RoutedCommands:TestRoutedCommand.OnTest' is not a valid name for an event handler method.
Only instance methods of the generated class or code-behind are valid
(перевод может не быть точным, потому что исходное сообщение не было на английском языке)
Кажется, что внешние методы не поддерживаются, но я был бы уверен, что ничего не пропустил. Интересно, является ли это тот факт, что мои методы статичны?
Есть ли другой способ экстернализации моих методов или я должен остаться с этими 4 способами, вызывающими только 2 других?
Примечание: в моем проекте это более 30 дублированных маршрутизируемых методов вызова методов только 2 человека ... вот почему меня это так беспокоит.
Спасибо.
К сожалению, ссылка больше не действительна. Я был бы очень заинтересован в предлагаемом решении, вы можете это объяснить? – Wilbert