如何取消选择控件模板中的按钮?

时间:2014-07-25 16:06:53

标签: wpf

我有一个接受数据输入的OK按钮,但是用户可以更改一些数据并再次按下它。每次按下都会保存特定配置。

我希望OK按钮上的选择消失,以便用户知道它已被接受。

理想情况下,我想要一个纯WPF解决方案。

更新:部分代码

<ControlTemplate x:Key="MapCutIconsTemplate">
    <DockPanel DockPanel.Dock="Right">
        <controls:ImageButton Style="{DynamicResource ButtonStyle}"
                              Content="OK"
                              DockPanel.Dock="Top"
                              Command="{Binding AcceptPositionCommand}" 
                              Source="{DynamicResource OkIcon}" 
                              Background="{DynamicResource BackgroundColour}"/>

        <controls:ImageButton Style="{DynamicResource ButtonStyle}"
                              Content="Back"
                              DockPanel.Dock="Top"
                              Command="{Binding BackCommand}" 
                              Source="{DynamicResource BackIcon}" 
                              Background="{DynamicResource BackgroundColour}"/>

    </DockPanel>
</ControlTemplate>

单击确定按钮后,我想将选择从“确定”按钮移动到“返回”按钮。

更新2:越来越近

CommandParameter="{Binding RelativeSource={x:Static RelativeSource.Self}}"

这会给我一个按下的按钮,作为参数传递给Command函数。我真正需要的是另一个按钮对象。

解决方案:

CommandParameter="{Binding ElementName=CutBack}"
由@ VS1提出。

1 个答案:

答案 0 :(得分:0)

请使用以下代码更改xaml

<ControlTemplate x:Key="MapCutIconsTemplate">
    <DockPanel DockPanel.Dock="Right">
        <controls:ImageButton Name="acceptButton" 
                          Style="{DynamicResource ButtonStyle}"
                          Content="OK"
                          DockPanel.Dock="Top"
                          Command="{Binding AcceptPositionCommand}" 
                          CommandParameter="{Binding ElementName=backButton}" 
                          Source="{DynamicResource OkIcon}" 
                          Background="{DynamicResource BackgroundColour}"/>

        <controls:ImageButton Name="backButton" 
                          Style="{DynamicResource ButtonStyle}"
                          Content="Back"
                          DockPanel.Dock="Top"
                          Command="{Binding BackCommand}" 
                          Source="{DynamicResource BackIcon}" 
                          Background="{DynamicResource BackgroundColour}"/>

    </DockPanel>
</ControlTemplate>

并且,您的 ViewModel的AcceptPositionCommand.OnExecute 包含在以下行中:

(parameter as Button).Focus(); //Will move focus to Back Button