首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何动态隐藏/禁用WPF功能区选项卡?

如何动态隐藏/禁用WPF功能区选项卡?
EN

Stack Overflow用户
提问于 2011-08-31 04:13:41
回答 2查看 6.6K关注 0票数 2

假设我有一个功能区选项卡名为A (name="_tabA")和B (name="_tabB")。如何动态禁用或隐藏选项卡A或B?

我在RibbonControlsLibrary.dll中使用VS2010。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-31 04:30:03

代码语言:javascript
复制
<ribbon:RibbonTab Visibility="{Binding ShowThisRibbonTab, Converter=...}">

其中,ShowThisRibbonTab是ViewModel的属性,转换器很可能是BooleanToVisibilityConverter

或者,如果你不是在做MVVM,你可以给它一个名字并设置它的可见性

票数 3
EN

Stack Overflow用户

发布于 2011-09-19 03:33:21

没有MVVM

我可以很容易地用_tabA.Visibility = Visibility.CollapsedVisibility.Visible隐藏/显示。

使用MVVM

.xaml.cs代码

使类也继承自INotifyProperty

  • Make的属性,以便在修改属性时引发事件。

  • Setup INotifyProperty

  • Make

  • 代码。

主代码如下所示

代码语言:javascript
复制
public partial class MainWindow : RibbonWindow, INotifyPropertyChanged
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = this;
    }

    public const string NamePropertyName = "VisibleA"; 
    private bool _visibleA = true;
    public bool VisibleA
    {
        get
        {
            return _visibleA;
        }
        set
        {
            _visibleA = value;
            RaisePropertyChanged(NamePropertyName); 
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    } 
}

转换器代码如下所示

代码语言:javascript
复制
[ValueConversion(typeof(bool), typeof(Visibility))]
internal class CheckVisibleA : System.Windows.Data.IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool? val = value as bool?;
        string param = parameter as string;

        if (value != null)
        {
            if (val == true)
            {
                return Visibility.Visible;
            }
        }

        return Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

.xaml代码

此XAML有两个功能区选项卡:_ribboHome和_ribbonHelp。"VisibleA“属性控制可见性。当我单击复选框时,VisibleA属性打开/关闭,并且_ribbonHome相应地可见/折叠。

代码语言:javascript
复制
<ribbon:Ribbon DockPanel.Dock="Top" Title="teusje.wordpress.com" >
    <ribbon:RibbonTab Header="Home" Name="_ribbonHome" Visibility="{Binding Path=VisibleA, Converter={StaticResource CheckVisibleA}, ConverterParameter=Show}">
        <ribbon:RibbonGroup Name="Clipboard" Header="Clipboard">
            <ribbon:RibbonButton Command="{StaticResource hwc}" CommandParameter="Hello, smcho" Label="Copy" LargeImageSource="Images/LargeIcon.png" /> 

        </ribbon:RibbonGroup>
    </ribbon:RibbonTab>
    <ribbon:RibbonTab Header="Help">
        <ribbon:RibbonGroup Name="_ribbonHelp" Header="Help this">
            <ribbon:RibbonButton Command="{StaticResource hwc}" CommandParameter="Hello, smcho" Label="Copy Help" LargeImageSource="Images/LargeIcon.png"/>
            <ribbon:RibbonCheckBox IsChecked="{Binding Path=VisibleA}"/>
        </ribbon:RibbonGroup>
    </ribbon:RibbonTab>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7249216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档