2009-07-27 28 views
0

經常發現答案不同DelegateCommands,但現在它了我的第一次;)按鈕:綁定取決於ClickMode值(按下/鬆開)這裏

我們使用MVVM模式結合DelegateCommands。所以通常我的命令綁定到這樣的按鈕:

<Button Command="{Binding SetXYZActivatedCommand}" /> 

我需要執行不同的命令時,按下按鈕,當按鈕被再次釋放。我的想法如下:

<Button Grid.Row="3" x:Name="TestButtonObj" Content="asdlknm"> 
    <Button.Template> 
     <ControlTemplate TargetType="{x:Type Button}"> 
      <Border x:Name="border" CornerRadius="80" Background="LightBlue"> 
       <ContentPresenter Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsPressed" Value="True"> 
       <Setter TargetName="border" Property="Background" Value="Aqua" /> 
       <Setter TargetName="content" Property="Content" Value="Pressed" /> 
       </Trigger> 
       <Trigger Property="ClickMode" Value="Press"> 
       <Setter TargetName="TestButtonObj" Property="Command" Value="{Binding SetPttDeactivatedCommand}" /> 
       </Trigger> 
       <Trigger Property="ClickMode" Value="Release"> 
       <Setter Property="Button.Command" Value="{Binding SetPttActivatedCommand}" /> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Button.Template> 
</Button> 

問題是TestButtonObj未知。好吧,我接受了,我無法訪問父對象。沒有TargetName =「TestButtonObj」它編譯,但是該命令不被執行。 Mhhhh ...

好吧,我試過以下,但它不能正常工作......是的CommandBinding不是依賴屬性(希望你讓我離開這個迷宮)

<Button Grid.Row="2" Content="CommandBindings"> 
<Button.CommandBindings> 
    <CommandBinding Command="{Binding SetPttActivatedCommand}" /> 
</Button.CommandBindings> 

在這點我堅持。我不知道這種方式是否完全錯誤。我閱讀了關於命令和綁定的全天文檔,但我不明白。我希望有人能告訴我方式。

我今天早上還在這裏發帖: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/cc68b10c-4e1c-4344-9f00-710185d4b1b0 如果我得到答案,我也會在這裏發帖。

太感謝你了(提前), 托蒂

回答

1

您應該使用AttachedCommandBehavior庫。它可以讓你多個命令綁定到同一控制:

<Button Grid.Row="3" x:Name="TestButtonObj" Content="asdlknm"> 
    <local:CommandBehaviorCollection.Behaviors> 
    <local:BehaviorBinding Event="MouseLeftButtonDown" Action="{Binding SetPttDeactivatedCommand}" /> 
    <local:BehaviorBinding Event="MouseLeftButtonUp" Command="{Binding SetPttActivatedCommand}" /> 
    ... 
    </local:CommandBehaviorCollection.Behaviors> 
</Button> 
0

你嘗試在綁定設置的名字嗎?

<Setter Property="Command" Value="{Binding ElementName=TestButtonObj, Path=SetPttDeactivatedCommand}" /> 
+0

現在,我嘗試了 - 但沒有成功:( 不`噸甚至在斷點處停止: 公衆的ICommand SetPttDeactivetedCommant 其中DelegateCommand應該被實例化 – TottiW 2009-07-27 21:04:26

+0

檢查綁定是否是雙向的除此之外,也許setter不能在模板外使用命名元素...... – 2009-07-27 21:54:10

相關問題