禁用WPF中的上下文菜单按钮

时间:2017-09-27 12:23:40

标签: c# 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;
}

但它似乎不起作用。我访问它的方式有什么不对吗?

1 个答案:

答案 0 :(得分:0)

只要该代码位于控件后面的代码中,它就应该有效。

我注意到也可能会应用一些自定义样式。可能是你缺少菜单项禁用状态的样式?所以菜单项实际上是禁用的,但在视觉上它不会以不同的方式出现?

在菜单项的样式或控件模板中检查它是否对控件的IsEnabled属性做出了反应,或者确认&#34;已禁用&#34; VisualState定义。