經常發現答案不同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 如果我得到答案,我也會在這裏發帖。
太感謝你了(提前), 托蒂
現在,我嘗試了 - 但沒有成功:( 不`噸甚至在斷點處停止: 公衆的ICommand SetPttDeactivetedCommant 其中DelegateCommand應該被實例化 – TottiW 2009-07-27 21:04:26
檢查綁定是否是雙向的除此之外,也許setter不能在模板外使用命名元素...... – 2009-07-27 21:54:10