2010-09-01 4 views
3

Dites que nous utilisons le geste d'entrée "Ctrl + S" pour enregistrer le projet.Masquer ou désactiver le texte de mouvement d'entrée dans wpf

Dans le menu Fichier - "Enregistrer Ctrl + S" un tel texte est affiché. Maintenant sur canexecute de SaveCommand je vérifie si le projet requis est enregistré ou non. Si cela n'est pas nécessaire, Save est désactivé.

Dans ce cas, je vois un élément de menu comme "Ctrl + S". Je dois aussi cacher ce texte de geste d'entrée.

Des idées?

Tout nouveau flux ??

Cette question a pas d'amour :(...

+0

je besoin v.soon. S'il vous plaît venir avec une bonne solution .. .. – Rohit

+0

Commentaires sur le feed ... – Rohit

+0

L'élément de menu incluant le texte gestuel doit être désactivé automatiquement lorsque CanExecute renvoie la valeur false. N'est-ce pas ce que vous voyez? –

Répondre

2

Enfin je trouve une solution. Overrided le modèle par défaut du menu et ajouté un déclencheur que chaque fois élément de menu est désactivé, changer la couleur du texte Gesture d'entrée à ressembler personnes à mobilité réduite.

Voici le modèle et le dernier surchargée déclencheur ne la question mentionnée ci-dessus, je veux dire le changement de couleur ..

<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> 
Questions connexes