2016-12-07 10 views
2

私はWPFの初心者です。だから私は国境と内容の間に何が起こっているのかを理解する必要があります。私はこの問題もボタンにも持っています。WPF MenuItemホバースタイルの埋め込み問題

要するに、次のようにMenuItemのスタイルがあります。問題は、アイテムをホバーして、MenuItemエッジとコンテンツの間にポインタを移動すると、境界線が消えることです。私はパディングやマージンに何か問題があると思う。

ポインタがアイテム内にあるときに常に境界が表示されるようにします。

<Style TargetType="MenuItem" x:Key="MenuItemsStyle"> 
    <Setter Property="BorderThickness" Value="1"/> 
    <Setter Property="BorderBrush" Value="Transparent"/> 
    <Setter Property="Background" Value="Transparent"/> 
    <Setter Property="Padding" Value="3,0,3,0"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="MenuItem"> 
       <Border Margin="{TemplateBinding Margin}" 
         x:Name="B1" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"> 
        <Grid VerticalAlignment="Center"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 
         <ContentPresenter 
          x:Name="Textb" 
          Grid.Column="1" 
          Content="{TemplateBinding Header}" 
          ContentStringFormat="{TemplateBinding HeaderStringFormat}" 
          ContentSource="Header" 
          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
          VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
          HorizontalAlignment="{TemplateBinding HorizontalAlignment}" 
          TextElement.Foreground="Black"> 
          <ContentPresenter.ContentTemplate> 
           <DataTemplate> 
            <Border> 
             <Grid> 
              <TextBlock Text="{TemplateBinding Property=Content}"/> 
             </Grid> 
            </Border> 
           </DataTemplate> 
          </ContentPresenter.ContentTemplate> 
         </ContentPresenter> 
        </Grid> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsHighlighted" Value="True"> 
        </Trigger> 
        <Trigger Property="IsEnabled" Value="False"> 
        </Trigger> 
        <MultiTrigger> 
         <MultiTrigger.Conditions> 
          <Condition Property="IsEnabled" Value="True"/> 
          <Condition Property="IsHighlighted" Value="True"/> 
         </MultiTrigger.Conditions> 
         <Setter Property="BorderBrush" TargetName="B1" Value="Gray"/> 
        </MultiTrigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 

     </Setter.Value> 
    </Setter> 
</Style> 

答えて

1

あなたはあなたの最も外側のBorderBackgroundプロパティを設定する必要があります。

<ControlTemplate TargetType="MenuItem"> 
    <Border Margin="{TemplateBinding Margin}" 
      x:Name="B1" 
      Background="Transparent" 
      ... 
    </Border> 
    ... 
</ControlTemplate> 
+0

ありがとうございます@ qqww2 –

関連する問題