2017-09-27 34 views
0

上下文菜單按鈕,我創建了一個按鈕,看起來像:禁用WPF

enter image description here

這裏是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> 

現在基於一些條件,我想禁用通過代碼安裝和靜默安裝按鈕。

我試着使用:

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

,但它似乎並不工作。我訪問它的方式有什麼問題嗎?

+0

所以,雖然他們被禁用,你仍然可以點擊它們,他們執行? –

+1

你在哪裏試圖禁用菜單項?我無法重現這個問題。 – Sinatr

+0

您可以嘗試將'x:Name =「MultiInstallBtn」'更改爲'Name =「MultiInstallBtn」'? 'Name'設置意味着設置控制名稱和'x:Name'主要用於在後面的代碼中執行命令的綁定(您當然不會在這裏執行)。 – praty

回答

0

只要該代碼位於控件背後的代碼,那麼它應該工作。

我注意到可能會有一些自定義樣式被應用。可能是因爲缺少菜單項禁用狀態的樣式?所以菜單項實際上是禁用的,但從視覺上看,它不以不同的方式呈現?

檢查在菜單項的樣式或控件模板中是否對控件的IsEnabled屬性作出了反應,或者是否定義了「已禁用」的VisualState。