2009-05-29 50 views
0

我已经实施了attached command behavior pattern found here并且它很好地运作以允许例如边境到有火灾视图模型一个左或右键单击事件:如何将两个附加行为附加到一个XAML元素?

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" 
     > 

回答

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> 
+0

就是这样,谢谢,不过搞笑的是我的XAML编辑给我的错误“的附着性能‘行为’型‘CommandBehaviorCollection’没有被发现。”虽然我可以运行并编译它,但为什么呢? – 2009-05-29 15:21:48

0

“就是这样,谢谢,滑稽虽然我的XAML编辑给我的错误‘的附着性能‘行为’型‘CommandBehaviorCollection’。’未找到,虽然我可以运行并编译罚款,这是为什么?”

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