经常在这里找到答案,但现在这是我第一次;)
我们将 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" 它会编译,但不会执行命令。嗯……
好的,我尝试了以下方法,但它无法正常工作...... 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 如果我得到答案,我也会在这里发布.
非常感谢(提前),托蒂