以编程方式隐藏 WPF 功能区标题

发布于 2024-11-14 12:58:12 字数 809 浏览 1 评论 0原文

我正在使用 VS2010 的 WPF Ribbon 应用程序。每个 RibbonGroup 都有一个 Header。即使我将标题留空,功能区仍然会为标题保留一个空白空间。如何以编程方式隐藏标题?

例如,我有以下 Xaml:

<ribbon:RibbonTab x:Name="HelpTab"
                    Header="Help" FontSize="10">
    <ribbon:RibbonGroup x:Name="HelpGroup"
                        Header="Help Group" FontFamily="Verdana" FontWeight="Bold">
             <!-- ..... -->
        </ribbon:RibbonButton>
    </ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:Ribbon>

我想以编程方式隐藏由红色矩形标记的部分(标题文本和高度空间)。

在此处输入图像描述

我正在寻找一个 C# 代码背后的解决方案,我可以在其中隐藏文本和空间(高度)标头占据了所有内容,如下所示:

// of course, this doesn't work    
HelpTab.HeaderStyle.Visibility = Visibility.Hide

I am using VS2010's WPF Ribbon Application. Each RibbonGroup has a Header. Even If I leave the Header empty, the Ribbon will still reserve an empty space for the Header. How can I programmatically hide the header?

For instance, I have following Xaml:

<ribbon:RibbonTab x:Name="HelpTab"
                    Header="Help" FontSize="10">
    <ribbon:RibbonGroup x:Name="HelpGroup"
                        Header="Help Group" FontFamily="Verdana" FontWeight="Bold">
             <!-- ..... -->
        </ribbon:RibbonButton>
    </ribbon:RibbonGroup>
</ribbon:RibbonTab>
</ribbon:Ribbon>

I want to programmatically hide the part (header text and height space) marked by red rectangle.

enter image description here

I'm looking for a C# code behind solution where I could hide the text and the space (height) the header takes up all together, something such as below:

// of course, this doesn't work    
HelpTab.HeaderStyle.Visibility = Visibility.Hide

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无悔心 2024-11-21 12:58:12

您可以通过 VisualTreeHelper 来完成此操作。只需将行 MinHeight 设置为 0 :

private void RibbonLoaded(object sender, RoutedEventArgs e)
{
  DependencyObject groupBorder = VisualTreeHelper.GetChild(Foobar, 0);
  Grid groupMainGrid = VisualTreeHelper.GetChild(groupBorder , 0) as Grid;
  if (groupMainGrid != null)
  {
    groupMainGrid.RowDefinitions[2].MinHeight = 0;
  }
} 

这是假设您没有设置 Header 属性。行高默认设置为自动。因此,如果您设置 Header 属性,您不妨将 Height 设置为 0 :

groupMainGrid.RowDefinitions[2].Height = 0;

You can do it via the VisualTreeHelper. Just go set the row MinHeight to 0 :

private void RibbonLoaded(object sender, RoutedEventArgs e)
{
  DependencyObject groupBorder = VisualTreeHelper.GetChild(Foobar, 0);
  Grid groupMainGrid = VisualTreeHelper.GetChild(groupBorder , 0) as Grid;
  if (groupMainGrid != null)
  {
    groupMainGrid.RowDefinitions[2].MinHeight = 0;
  }
} 

This is assuming that you didn't set the Header property. The height of the row is set by default to Auto. So if you set the Header property, you might as well set the Height to 0 :

groupMainGrid.RowDefinitions[2].Height = 0;
囍笑 2024-11-21 12:58:12

您始终可以创建堆栈面板而不是功能区组。

You can always create stack panel instead of ribbon group.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文