私は別個のファイルに2つの異なる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つだけ呼び出す方法がありますか?
注:私のプロジェクトでは、これは30個以上の複製されたroutedCommandメソッドの呼び出しが2つしかありません...これが私をそんなに悩ます理由です。
ありがとうございました。
残念ながらリンクはもう有効ではありません。私は非常に提案されたソリューションに興味があります、あなたはそれを説明することができますか? – Wilbert