0

我已经实现了在此处找到的附加命令行为模式,它可以很好地允许边框具有在 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());
        }
    };
}

但是,如何将两个附加行为附加到一个元素,例如,我想做类似以下的事情,但它当然会给我一个错误:

<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

您发送的链接包含那个答案。您可以使用 ACB v2 中的 CommandBehaviorCollection.Behaviors 功能。

   <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 编辑器给了我错误“在类型 'CommandBehaviorCollection' 中找不到可附加属性 'Behaviors'。”虽然我可以运行和编译它,但很有趣,这是为什么呢?

原因是允许命令行为集合(它是一个附加的属性集合)的代码实际上是一种 XAML 漏洞。您可以在这里阅读更多相关信息: http ://wekempf.spaces.live.com/blog/cns!D18C3EC06EA971CF!468.entry?sa=276442122

于 2009-07-29T16:16:08.543 回答