2017-09-27 2 views
0

ich eine Taste erstellt, die wie folgt aussieht:ein Kontextmenü-Schaltfläche in WPF deaktivieren

enter image description here

Hier ist die XAML:

<Button x:Name="InstallButtonContainer" Style="{StaticResource ResourceKey=StyleAppButton}" Grid.Column="3" > 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="15"/> 
     </Grid.ColumnDefinitions> 
     <Button x:Name="InstallButton" Content="Install" Grid.Column="0" 
      Style="{StaticResource ResourceKey= StyleDropDownButton}" 
      ToolTip="{x:Static local:ToolTipStrings.INSTALLBUTTONTOOLTIP}" Click="InstallButton_Click" 
      ToolTipService.ShowDuration="2000" 
      Margin="-20,-2,-4.5,-2" Grid.ColumnSpan="2" Width="51" FontFamily="Calibri" /> 
     <Button x:Name="DropdownButton" Grid.Column="1" Margin="18,-2,-20,-2" 
      Width="14" Click="load_install_dropdown" Style="{StaticResource ResourceKey= StyleDropDownButton}"> 
      <Button.ContextMenu> 
       <ContextMenu x:Name="ButtonContextMenu"> 
        <MenuItem Header="Install" Click="BaseReleaseInstallContextMenuClick" x:Name="MultiInstallBtn"> 
         <MenuItem.Icon> 
          <Image Width="12" Height="12"> 
           <Image.Source> 
            <ImageSource>Resources/install.ico</ImageSource> 
           </Image.Source> 
          </Image> 
         </MenuItem.Icon> 
        </MenuItem> 
        <MenuItem Header="Silent Install" Click="BaseReleaseSilentInstallContextMenuClick" x:Name="MultiInstallSilentBtn"> 
         <MenuItem.Icon> 
          <Image Width="12" Height="12"> 
           <Image.Source> 
            <ImageSource>Resources/install.ico</ImageSource> 
           </Image.Source> 
          </Image> 
         </MenuItem.Icon> 
        </MenuItem> 
        <MenuItem Header="Download" Click="BaseReleaseMultipleDownloadContextMenuClick"> 
         <MenuItem.Icon> 
          <Image Width="12" Height="12"> 
           <Image.Source> 
            <ImageSource>Resources/Down.png</ImageSource> 
           </Image.Source> 
          </Image> 
         </MenuItem.Icon> 
        </MenuItem> 
       </ContextMenu> 
      </Button.ContextMenu> 
      <StackPanel Orientation="Horizontal"> 
       <Path x:Name="BtnArrow" Margin="-3,-10" VerticalAlignment="Center" Width="8" Height="10" Fill="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" 
        Stretch="Uniform" HorizontalAlignment="Right" 
        Data="F1 M 301.14,-189.041L 311.57,-189.041L 306.355,-182.942L 301.14,-189.041 Z "/> 
      </StackPanel> 
     </Button> 
    </Grid> 
</Button> 

nun basierend auf einer Bedingung, möchte ich die deaktivieren Schaltflächen für die Installation und automatische Installation über den Code

Ich habe versucht, mit:

if(condition) 
{ 
    MultiInstallBtn.IsEnabled = false; 
} 

aber es scheint nicht zu funktionieren. Ist etwas falsch an der Art, wie ich darauf zugreife?

+0

Also, obwohl sie deaktiviert sind, können Sie immer noch auf sie klicken und sie ausführen? –

+1

Wo möchten Sie den Menüpunkt deaktivieren? Ich kann das Problem nicht reproduzieren. – Sinatr

+0

Können Sie versuchen, 'x: Name =" MultiInstallBtn "' in 'Name =" MultiInstallBtn "'? 'Name' bedeutet, dass man den Kontrollnamen eingibt und' x: Name' wird meistens verwendet, um Bindungen mit Befehlen im Code auszuführen (was Sie hier nicht tun!). – praty

Antwort

0

Solange dieser Code im Code hinter der Kontrolle ist, sollte es funktionieren.

Ich merke, dass es auch einige benutzerdefinierte Styling angewendet werden kann. Könnte es sein, dass Sie das Styling für den deaktivierten Zustand des Menüelements vermissen? Also ist der Menüpunkt eigentlich deaktiviert, aber optisch sieht das nicht anders aus?

Überprüfen Sie, ob in der Stil- oder Steuerelementvorlage für das Menüelement auf die IsEnabled-Eigenschaft des Steuerelements reagiert wird oder dass ein VisualState für "Deaktiviert" definiert ist.

Verwandte Themen