/ / WPF Menuitem Border - wpf, menu, wpf-ovládacie prvky, štýly, menuitem

WPF Menuitem Border - wpf, menu, wpf-ovládacie prvky, štýly, menuitem

Som sa dostal do problému s pokusom implementovať a Menu a nemôžem zistiť, čo sa deje. Snažím sa vytvoriť jednovrstvové menu pomocou Menu ovládanie. Tu je môj kód menu:

<Menu DockPanel.Dock="Top" Height="22" Name="menu1" VerticalAlignment="Top" Background="#FF325170">
<MenuItem Header="Featured" Style="{StaticResource menuItemStyle}" />
<MenuItem Header="Search" Style="{StaticResource menuItemStyle}" />
</Menu>

A môj štýl pre mňa MenuItems je nasledovné:

<Style x:Key="menuItemStyle" TargetType="{x:Type MenuItem}">
<Style.Triggers>
<Trigger Property="MenuItem.IsMouseOver" Value="true">
<Setter Property = "Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>

Keď prejdem myšou do položiek ponuky, existuje a Border ktorý sa objaví, a nemôžem zistiť, prečo ma život, ako odstrániť túto hranicu.

odpovede:

5 pre odpoveď č. 1

Pre veľa vstavaných štýlov ovládania WPF je potrebné prepísať ovládací prvok ControlTemplate.

Tu je stránka MSDN ktorý poskytuje Menu ControlTemplate, sinštrukcie o tom, ako ju používať - ​​v podstate vkladáte lokálne kópie všetkých štýlov ovládacieho prvku Menu, ktoré potom potlačujú predvolený vzhľad ovládania.

Ak chcete vyriešiť váš problém, mali by ste byť schopní tento štýl vložiť:

<Style x:Key="{x:Type Menu}" TargetType="{x:Type Menu}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Menu}">
<!--Here is where you change the border thickness to zero on the menu-->
<Border BorderThickness="0">
<StackPanel ClipToBounds="True" Orientation="Horizontal"
IsItemsHost="True"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>