Unable to set custom ControlTemplate for a MenuItem
Posted: 29 May 2019, 22:22
I confirmed the following works in WPF but not in Noesis. I did then realize you didn't yet have complete support for "x:Static"...
So I also tried this alternate way of specifying the control template (sans Static), which also works in WPF.... bug again, not in Noesis.
Any ideas here?
Code: Select all
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelItemTemplateKey}" TargetType="MenuItem">
<Border x:Name="MenuItemBorder" Width="190" Height="100" BorderThickness="1" CornerRadius="5, 5, 0, 0">
<Grid x:Name="sbGrid">
<Border x:Name="TopLevelBorder" CornerRadius="5, 5, 0, 0" Background="{StaticResource SoftButtonBorderBrush}"/>
<Grid Background="Transparent" Margin="9">
<Rectangle x:Name="TopLevelRect" Fill="{StaticResource SoftButtonBackgroundBrush}" RadiusX="5" RadiusY="5"/>
<ContentPresenter x:Name="TopLevelHeader" Margin="6,0,6,3" HorizontalAlignment="Center" VerticalAlignment="Center" >
<ContentPresenter.Content>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<DockPanel Grid.Column="0">
<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Header}"/>
</DockPanel>
<Path x:Name="Caret" Grid.Column="1" Margin="10,0,0,0" Data="M72.2,101.7 L79.699997,94.399997 87.699997,101.6" HorizontalAlignment="Center" VerticalAlignment="Center"
Height="10" Width="19" Stretch="Fill" Stroke="#FFFFFF" StrokeThickness="3"/>
</Grid>
</ContentPresenter.Content>
<ContentPresenter.Resources>
<Style TargetType="{x:Type TextBlock}" BasedOn="{StaticResource WrappingStyle}"/>
</ContentPresenter.Resources>
</ContentPresenter>
</Grid>
</Grid>
<Border.RenderTransform>
<TranslateTransform x:Name="ToggleMenuItem">
</TranslateTransform>
</Border.RenderTransform>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
<Setter TargetName="sbGrid" Property="Opacity" Value="0.8"/>
<Setter TargetName="MenuItemBorder" Property="Background" Value="{StaticResource SoftButtonDisabledBorderBrush}"/>
</Trigger>
<DataTrigger Binding="{Binding HasChildren}" Value="False">
<Setter TargetName="Caret" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Code: Select all
<ControlTemplate x:Key="{ComponentResourceKey ResourceId=TopLevelItemTemplateKey, TypeInTargetAssembly={x:Type MenuItem}}" TargetType="{x:Type MenuItem}">