RibbonControl:中心标题

发布于 2024-11-17 21:29:20 字数 128 浏览 3 评论 0原文

我在 UserControl 上使用 Microsoft RibbonControl(我们需要将其托管在存根表单上以在 MDI 系统中托管 WPF)。遗憾的是,功能区的标题在功能区标题中显示“顶部/左侧”,看起来很荒谬。我该如何接近那个傻瓜?

I'm using the Microsoft RibbonControl on a UserControl (it needs to be so we can host it on a stub form to host the WPF in our MDI system). Sadly, the title of the Ribbon displays Top/Left in the ribbon's header, and it looks ridiculous. How do I get at that sucker?

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

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

发布评论

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

评论(1

月依秋水 2024-11-24 21:29:20

我现在正在做同样的事情。我通过使用功能区标题的数据模板解决了这个问题:

<r:Ribbon.TitleTemplate>
    <DataTemplate>
        <TextBlock Text="Put you title here" Margin="3,3,0,0"></TextBlock>
    </DataTemplate>
</r:Ribbon.TitleTemplate>

如果在 RibbonWindow 中使用功能区,您可能还想为标题文本添加发光效果,以便在将其放置在深色背景上时能够正确读取它。在这种情况下,请将此 XAML 添加到 TextBlock 中:

<TextBlock.BitmapEffect>
    <OuterGlowBitmapEffect GlowColor="White" Opacity="0.7" GlowSize="10"/>
</TextBlock.BitmapEffect>

在 RibbonWindow 中使用 Ribbon 时,还有一个问题;当窗口状态为正常或窗口最大化时,标题文本将被正确放置。为了解决这个问题,我将 TextBlock Margin 绑定到代码绑定中的一个属性:

public Thickness TitleMargin
{
    get { return this.WindowState == WindowState.Maximized ? new Thickness(0, 3, 0, 0) : new Thickness(0); }
}

要使其正常工作,您还需要在每次窗口状态更改时触发 PropertyChanged 事件:

protected override void OnStateChanged(EventArgs e)
{
    OnPropertyChanged("TitleMargin");
    base.OnStateChanged(e);
}

I am working on just about the same thing right now. I solved it by using a datatemplate for the ribbon title:

<r:Ribbon.TitleTemplate>
    <DataTemplate>
        <TextBlock Text="Put you title here" Margin="3,3,0,0"></TextBlock>
    </DataTemplate>
</r:Ribbon.TitleTemplate>

If the ribbon is used in a RibbonWindow, you probably also want to add a glow to the title text to be able to read it properly when placed over a dark background. In that case, add this XAML inside the TextBlock:

<TextBlock.BitmapEffect>
    <OuterGlowBitmapEffect GlowColor="White" Opacity="0.7" GlowSize="10"/>
</TextBlock.BitmapEffect>

There is one more problem with the Ribbon when used within a RibbonWindow; the title text will either be placed correctly when window state is Normal or when window is maximized. To solve this I bound the TextBlock Margin to a property in the codebind:

public Thickness TitleMargin
{
    get { return this.WindowState == WindowState.Maximized ? new Thickness(0, 3, 0, 0) : new Thickness(0); }
}

To get this working, you also need to fire a PropertyChanged event each time the window state changes:

protected override void OnStateChanged(EventArgs e)
{
    OnPropertyChanged("TitleMargin");
    base.OnStateChanged(e);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文