wpf - 当我将模板添加到我的 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 添加到控制模板?所以资源开始再次出现在我的菜单中?
解决方案
推荐阅读
- css - EXT JS:css和相对于父容器的位置
- google-sheets-api - Integromat:重命名 Google 表格(单个表格与整个电子表格)
- angular - 为什么更正导入后 rjxjs-compact 错误仍然存在
- javascript - 这是关闭还是不同的东西?
- javascript - 尝试导入错误:“SupportedPackages”未从“@tensorflow-models/facemesh”导出(导入为“facemesh”)
- swift - 延迟应用程序进度,直到 Firebase 数据检索完成
- javascript - 如何使用 v-slot:cell 访问其他列的值?
- gekko - 在 GEKKO 中导出流形上的最佳轨迹
- c++ - VS19 上的嵌套模板 (C++17) 编译失败
- reactjs - 更改材质 UI 组件的自定义颜色以调整暗模式