2016-12-13 3 views
1

Когда я добавляю эту контрольную таблицу, мои флажки исчезают, и отображается только текст флажка. И когда мышь закончилась, textbackground становится красным, как я могу сделать свой флажок красным, когда мышь закончилась?Флажок IsMouseOver не работает

<Style TargetType="CheckBox" x:Key="Checkbox"> 
    <Setter Property="BorderThickness"   Value="2" /> 
    <Setter Property="VerticalAlignment"  Value="Top" /> 
    <Setter Property="Margin"     Value="20,15,0,0" /> 
    <Setter Property="FontFamily"    Value="/Resources/Fonts/Source Sans Pro/#Source Sans Pro" /> 
    <Setter Property="FontSize"     Value="14" /> 
    <Setter Property="HorizontalAlignment"  Value="Left" /> 
    <Setter Property="Foreground"    Value="{DynamicResource CheckboxForegroundColor}" /> 
    <Setter Property="Background"    Value="{DynamicResource CheckboxBackgroundColor}" /> 
    <Setter Property="BorderBrush"    Value="{DynamicResource CheckboxBorderbrushColor}"/> 


    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type CheckBox}"> 
       <CheckBox Background="{TemplateBinding Background}" > 
        <ContentPresenter /> 
       </CheckBox> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="True"> 
         <Setter Property="Background" Value="Red"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
+0

положить курок как стиль.Триггеры вместо ControlTemplate.Triggers – nkoniishvt

+0

Я получаю Элементы «триггеры» не являются приемлемыми или recongnigzed? –

+0

nkoniishvt

ответ

0

Это будет работать для некоторых свойств (попробуйте FontSize, например), но не для других. Шаблон по умолчанию для CheckBox имеет триггеры, и они не беспокоятся о таких вещах, как TemplateBinding.

This post Сообщает вам, как извлечь шаблон по умолчанию для ComboBox. Вот выдержка, которая показывает вашу проблему:

<ControlTemplate.Triggers> 
    ... 
    <Trigger Property="IsMouseOver" Value="true"> 
     <Setter 
      Property="Background" 
      TargetName="checkBoxBorder" 
      Value="{StaticResource OptionMark.MouseOver.Background}"/> 
     ... 
    </Trigger> 
    ... 
</ControlTemplate.Triggers> 

Ваш лучший выбор - возможно, переопределить весь шаблон. К счастью, это не слишком комплекс ...


  1. Удалить свой собственный шаблон.
  2. Follow the steps outlined in the post I linked to. Это должно предоставить вам копию шаблона по умолчанию CheckBox.
  3. Измените эту копию. В частности, триггер IsMouseOver, который я выписал: измените {StaticResource OptionMark.MouseOver.Background} на Red.

Если это до сих пор неясно, see this related post.

+0

Не могли бы вы объяснить, похоже, я уже сделал то, что вы сделали? Извините, но im beginner в xaml –

+0

Спасибо alot Petter !, мне пришлось скопировать шаблон флажка по умолчанию, чтобы он работал. –

+0

Я делаю то же самое с расширителем? Моя кнопка раунда белого экспандера не отображается в моей ОС. Вы знаете какие-либо решения? @petter –

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