2

基本的に、カスタム コントロールがありFooControlます。

public class FooControl : ItemsControl
{
    //Code
}

イベント処理を追加する必要がありますが、RoutedEvent を使用するよりも、代わりに Commanding を使用することをお勧めします。ただし、これを行う方法がよくわかりません。Bar1Property (DependencyProperty) が変更されたときに、Execute に関連付けられた実行プロパティが発生するようにしたい場合。.NET Reflector を介して ButtonBase コードを調べたところ、非常に複雑に見えます。コマンドを追加するのはこれほど複雑ですか?? 明らかに、CanExecuteChanged が変更されているかどうかに応じて、コントロールがそれ自体の特定の部分を有効/無効にするようにする必要もあります。しかし、それは別の部分だと思います。

これまでのところ、私の OnBar1Changed 関数は次のとおりです...

    private static void OnBar1Changed(DependencyObject obj, DependencyPropertyChangedEventArgs e)
    {
        FooControl element = (FooControl)obj;
        //What to do here?
    }
4

2 に答える 2

4

質問をしている途中で、カスタムコントロールでコマンドをサポートしたいようです(たとえば、ボタンのサポートなど)。これを行うには、ICommandSource の実装方法を確認することをお勧めします。Microsoft は、自分で実装する方法について詳しく説明しています。

http://msdn.microsoft.com/en-us/library/ms748978.aspx

于 2011-05-09T19:29:47.850 に答える
2

最も単純なレベルでは、本当に必要なのは次のようなものだけです。

FooControl element = obj as FooControl;
if (element == null) return;

if (element.MyCommand != null && element.CanExecute(this.CommandParameter) 
{
  element.MyCommand.Execute(this.CommandParameter);
}

CommandとCommandParameterの両方の依存関係プロパティも作成する必要があります。

お役に立てば幸いです。

于 2011-05-09T18:47:28.643 に答える