首页 > 解决方案 > 当我将模板添加到我的 MenuItem 时,为什么我的 MenuItem.Ressource 没有显示?

问题描述

所以我得到了一个菜单,对于一个 MenuItem,我制作了一个看起来像这样的 ControlTemplate:

 <ControlTemplate x:Key="MenuItemControlTemplate1" TargetType="{x:Type MenuItem}">
        <Border x:Name="templateRoot" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
            <Grid x:Name="Grid" Margin="-1">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MinWidth="22" SharedSizeGroup="MenuItemIconColumnGroup" Width="Auto"/>
                    <ColumnDefinition Width="13"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="30"/>
                    <ColumnDefinition SharedSizeGroup="MenuItemIGTColumnGroup" Width="Auto"/>
                    <ColumnDefinition Width="20"/>
                </Grid.ColumnDefinitions>
                <ContentPresenter x:Name="Icon" Content="{TemplateBinding Icon}" ContentSource="Icon" HorizontalAlignment="Center" Height="16" Margin="3" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center" Width="16"/>
                <Border x:Name="GlyphPanel" BorderBrush="#FF3C7FB1" BorderThickness="1" Background="#FFD7EFFC" HorizontalAlignment="Center" Height="22" Margin="-1,0,0,0" Visibility="Hidden" VerticalAlignment="Center" Width="22">
                    <Path x:Name="Glyph" Data="M0,5.1L1.7,5.2 3.4,7.1 8,0.4 9.2,0 3.3,10.8z" Fill="#FF0C12A1" FlowDirection="LeftToRight" Height="11" Width="9"/>
                </Border>
                <ContentPresenter x:Name="menuHeaderContainer" ContentTemplate="{TemplateBinding HeaderTemplate}" Content="{TemplateBinding Header}" Grid.Column="2" ContentStringFormat="{TemplateBinding HeaderStringFormat}" ContentSource="Header" HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Center"/>
                <TextBlock x:Name="menuGestureText" Grid.Column="4" Margin="{TemplateBinding Padding}" Opacity="0.7" Text="{TemplateBinding InputGestureText}" VerticalAlignment="Center"/>
            </Grid>
        </Border>
        <ControlTemplate.Triggers>
            <Trigger Property="IsChecked" Value="True">
                <Setter Property="Visibility" TargetName="GlyphPanel" Value="Visible"/>
                <Setter Property="Visibility" TargetName="Icon" Value="Collapsed"/>
            </Trigger>
            <Trigger Property="IsHighlighted" Value="True">
                <Setter Property="Background" TargetName="templateRoot" Value="Transparent"/>
                <Setter Property="BorderBrush" TargetName="templateRoot" Value="#FF3C7FB1"/>
                <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="Black"/>
            </Trigger>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="#FF9A9A9A"/>
                <Setter Property="Fill" TargetName="Glyph" Value="#FF9A9A9A"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

然后这就是我的 MenuItem 的样子:

<MenuItem Foreground="Black" FontFamily="{Binding ElementName=wpfAudit, Path=FontFamily}" FontSize="{Binding ElementName=wpfAudit, Path=FontSize}" FontWeight="{Binding ElementName=wpfAudit, Path=FontWeight}" Header="Artikellabel Drucker" ItemsSource="{Binding ocArtikellabeldrucker, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Template="{DynamicResource MenuItemControlTemplate1}">
                    <MenuItem.Resources>
                        <RadioButton x:Key="RadioButtonResource" x:Shared="false" HorizontalAlignment="Center"
                 GroupName="MenuItemRadio" IsHitTestVisible="False" IsChecked="{Binding IstDrucker}" Style="{StaticResource {x:Type RadioButton}}"/>
                    </MenuItem.Resources>
                    <MenuItem.ItemContainerStyle>
                        <Style TargetType="MenuItem">
                            <Setter Property="FontWeight" Value="Bold"/>
                            <Setter Property="Header" Value="{Binding Name}"/>
                            <Setter Property="Icon" Value="{DynamicResource RadioButtonResource}"/>
                            <EventSetter Event="Click" Handler="MenuItemArt_Click" />
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IstDrucker, UpdateSourceTrigger=PropertyChanged}" Value="True">
                                    <Setter Property="FontWeight" Value="Bold"/>
                                </DataTrigger>
                                <DataTrigger Binding="{Binding IstDrucker, UpdateSourceTrigger=PropertyChanged}" Value="False">
                                    <Setter Property="FontWeight" Value="Normal"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </MenuItem.ItemContainerStyle>
                </MenuItem>

我现在遇到的问题是,当我制作该模板时,MenuItem.Ressources 将不会出现。这意味着当我拥有模板时,我现在可以访问 MenuItem.Ressource,如何将该 MenuItem.Ressource 添加到控制模板?所以资源开始再次出现在我的菜单中?

标签: wpfxamlmenu

解决方案


推荐阅读