0

ここにあるアタッチされたコマンドの動作パターンを実装しました。たとえば、Border に ViewModel で発生する左クリックまたは右クリックのイベントを許可するのにうまく機能します。

XAML:

<Border Background="Yellow" Width="350" Margin="0,0,10,0" Height="35" CornerRadius="2"
        c:CommandBehavior.Event="MouseLeftButtonDown" 
        c:CommandBehavior.Command="{Binding PressedLeftButton}"
        c:CommandBehavior.CommandParameter="MainBorder123">
    <TextBlock Text="this is the click area"/>
</Border>

コードビハインド:

public ICommand PressedLeftButton { get; private set; }

public MainViewModel()
{

    Output = "original value";

    PressedLeftButton = new SimpleCommand
    {
        ExecuteDelegate = parameterValue => {
            Output = String.Format("left mouse button was pressed at {0} and sent the parameter value \"{1}\"", DateTime.Now.ToString(), parameterValue.ToString());
        }
    };
}

ただし、2 つの添付された動作を 1 つの要素にアタッチするにはどうすればよいですか。たとえば、次のようなことをしたいのですが、もちろんエラーが発生します。

<Border Background="Yellow" Width="350" Margin="0,0,10,0" Height="35" CornerRadius="2"
        c:CommandBehavior.Event="MouseLeftButtonDown" 
        c:CommandBehavior.Command="{Binding PressedLeftButton}"
        c:CommandBehavior.CommandParameter="MainBorder123"
        c:CommandBehavior.Event="MouseRightButtonDown" 
        c:CommandBehavior.Command="{Binding PressedRighttButton}"
        c:CommandBehavior.CommandParameter="MainBorder123"
        >
4

2 に答える 2

5

あなたが送信したリンクには、まさにその答えが含まれています。CommandBehaviorCollection.Behaviors 機能は ACB v2 で使用できます。

   <Border Background="Yellow" Width="350" Margin="0,0,10,0" Height="35" CornerRadius="2" x:Name="test">
       <local:CommandBehaviorCollection.Behaviors>
               <local:BehaviorBinding Event="MouseLeftButtonDown" Action="{Binding DoSomething}" CommandParameter="An Action on MouseLeftButtonDown"/>
               <local:BehaviorBinding Event="MouseRightButtonDown" Command="{Binding SomeCommand}" CommandParameter="A Command on MouseRightButtonDown"/>
       </local:CommandBehaviorCollection.Behaviors>
       <TextBlock Text="MouseDown on this border to execute the command"/>
   </Border>
于 2009-05-29T15:09:00.330 に答える
0

「それは、ありがとう、おかしいですが、XAMLエディターで「アタッチ可能なプロパティ'Behaviors'がタイプ'CommandBehaviorCollection'に見つかりませんでした。」というエラーが表示されますが、正常に実行およびコンパイルできますが、それはなぜですか?」

その理由は、コマンド動作コレクション(添付されたプロパティコレクション)を許可するコードは、実際には一種のXAML抜け穴であるためです。あなたはここでそれについてもっと読むことができます: http ://wekempf.spaces.live.com/blog/cns!D18C3EC06EA971CF!468.entry?sa = 276442122

于 2009-07-29T16:16:08.543 に答える