2

我在 UserControl 上使用 Microsoft RibbonControl(它需要这样我们才能在存根表单上托管它,以便在我们的 MDI 系统中托管 WPF)。可悲的是,功能区的标题在功能区的标题中显示顶部/左侧,这看起来很荒谬。我怎么对付那个傻逼?

4

1 回答 1

3

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

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

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

<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);
}
于 2011-07-22T09:21:49.840 回答