필자는 별개의 파일에 두 개의 별개의 UI 요소 (menuItem (window.xaml) 및 userControl (foo.xaml) 있음)가 있습니다.고유 한 컨트롤에서 동일한 RoutedCommand를 사용하는 방법?
둘 다 똑같은 논리가 있습니다. 조건이 일치하는 경우에만 활성화되며 동일한 방법을 호출합니다. 이 논리를 코딩하려면 RoutedCommands을 사용합니다.
나는 CanExecute에서 동일한 조건으로 각 파일에 2 개의 다른 RoutedCommands를 사용할 수 있고 는 실행. 그것은 작동합니다.
나는 코드를 개선하여 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 명 밖에 호출하지 않아도됩니까?
참고 : 내 프로젝트에서이 중복 된 routedCommand 메서드는 2 개의 다른 호출 ...이 때문에 너무 많은 것을 귀찮게합니다.
감사합니다.
불행히도 링크가 더 이상 유효하지 않습니다. 나는 제안 된 솔루션에 매우 흥미가있을 것입니다, 당신은 그것을 설명 할 수 있습니까? – Wilbert