2014-05-01 2 views
1

следующие ToggleButton работает:командование ToggleButton не срабатывает при использовании стиля

<ToggleButton Command="{Binding ToggleCommand}" 
       RenderOptions.BitmapScalingMode="HighQuality" 
       ToolTip=".." 
       VerticalAlignment="Stretch" 
       Focusable="False" IsChecked="False" Margin="2" Padding="0" 
       Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"> 
    <Image Source="/..;component/Resources/...png" Height="26"/> 
</ToggleButton> 

Когда щелкнул реализация ToggleCommand исполняется.

Тогда я решил использовать стиль, как это:

<Style x:Key="ButtonToggle" TargetType="ToggleButton"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate> 
       <ToggleButton RenderOptions.BitmapScalingMode="HighQuality" 
           VerticalAlignment="Stretch" 
           Focusable="False" IsChecked="False" Margin="2" Padding="0" 
           Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"> 
        <Image Source="/..;component/Resources/...png" Height="26"/> 
       </ToggleButton> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

Вместе с:

<ToggleButton DockPanel.Dock="Right" Command="{Binding ToggleCommand}" ToolTip=".." 
       Style="{StaticResource ButtonToggle}" /> 

Дисплей нормально.
Связывание с ToggleCommand в порядке.
Просто, когда я нажимаю кнопку, реализация ToggleCommand не выполняется.
Может кто-нибудь объяснить, почему это так?

ответ

1

вы должны связать команду управления в ControlTemplate
добавить Command = "{TemplateBinding Command}" в ToggleButton в стиле, как:

  <Style x:Key="ButtonToggle" TargetType="ToggleButton"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <ToggleButton RenderOptions.BitmapScalingMode="HighQuality" 
          Command="{TemplateBinding Command}" 
          VerticalAlignment="Stretch" 
          Focusable="False" IsChecked="False" Margin="2" Padding="0" 
          Style="{StaticResource {x:Static ToolBar.ToggleButtonStyleKey}}"> 
          <Image Source="/..;component/Resources/...png" Height="26"/> 
         </ToggleButton> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
+0

Это дает: Член "Command" не признается или недоступен. – Gerard

+0

И '' дает: член команды недействителен, потому что у него нет имени квалификационного типа. – Gerard

+1

Однако это работает: 'Command = {{Binding Command, RelativeSource = {RelativeSource TemplatedParent}}" 'внутри шаблона controltemplate. – Gerard

Смежные вопросы