假设我们使用“Ctrl + S”输入手势来保存项目。
在文件菜单 - “保存Ctrl + S”中显示此类文本。 现在关于SaveCommand的canexecute我检查项目是否需要保存。如果不需要则禁用“保存”。
在这种情况下,我看到菜单项如“Ctrl + S”。我也要隐藏这个输入手势文本。
想法?
任何新的Feed?
这个问题没有爱情:( ...
答案 0 :(得分:2)
最后我发现了一个问题。覆盖了菜单项的默认模板,并添加了一个触发器,每当禁用菜单项时,将输入手势文本的颜色更改为看起来像已禁用。
这是覆盖模板,最后一个触发器执行上述问题,我的意思是颜色变化..
<ControlTemplate x:Key="{x:Static MenuItem.SubmenuItemTemplateKey}"
TargetType="{x:Type MenuItem}">
<Border x:Name="Border"
TextElement.Foreground="{DynamicResource SubMenuItemTextForegroundColor}"
Background="{DynamicResource FileMenuBackgroundBrush}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"
SharedSizeGroup="Icon" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto"
SharedSizeGroup="Shortcut" />
<ColumnDefinition Width="13" />
</Grid.ColumnDefinitions>
<ContentPresenter x:Name="Icon"
Margin="6,0,6,0"
VerticalAlignment="Center"
ContentSource="Icon" />
<Border x:Name="Check"
Width="13"
Height="13"
Visibility="Collapsed"
Margin="6,0,6,0"
Background="#C0C0C0"
BorderThickness="1"
BorderBrush="#404040">
<Path x:Name="CheckMark"
Width="7"
Height="7"
Visibility="Hidden"
SnapsToDevicePixels="False"
Stroke="#404040"
StrokeThickness="2"
Data="M 0 0 L 7 7 M 0 7 L 7 0" />
</Border>
<ContentPresenter x:Name="HeaderHost"
Grid.Column="1"
ContentSource="Header"
RecognizesAccessKey="{TemplateBinding Tag,
Converter={StaticResource TagToRecognizesAccessKeyConverter}
}"
VerticalAlignment="Center" />
<TextBlock x:Name="InputGestureText"
Grid.Column="2"
Text="{TemplateBinding InputGestureText}"
Margin="5,2,0,2"
DockPanel.Dock="Right" />
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="Icon"
Value="{x:Null}">
<Setter TargetName="Icon"
Property="Visibility"
Value="Hidden" />
</Trigger>
<Trigger Property="IsChecked"
Value="true">
<Setter TargetName="CheckMark"
Property="Visibility"
Value="Visible" />
</Trigger>
<Trigger Property="IsCheckable"
Value="true">
<Setter TargetName="Check"
Property="Visibility"
Value="Visible" />
<Setter TargetName="Icon"
Property="Visibility"
Value="Hidden" />
</Trigger>
<Trigger Property="IsHighlighted"
Value="true">
<Setter Property="Background"
TargetName="Border"
Value="{DynamicResource SubMenuItemMouseOverBackgroundBrush}" />
<Setter Property="TextElement.Foreground"
TargetName="Border"
Value="{DynamicResource FileMenuBackgroundBrush}" />
</Trigger>
<Trigger Property="IsEnabled"
Value="false">
<Setter TargetName="HeaderHost"
Property="TextElement.Foreground"
Value="#DDDDDD" />
<Setter TargetName="InputGestureText"
Property="TextElement.Foreground"
Value="#DDDDDD" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>