System.Windows.Controls.Ribbon的顶部有一个22px左右的边距(边框空格),为什么,如何正确去除?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.Windows.Controls.Ribbon的顶部有一个22px左右的边距(边框空格),为什么,如何正确去除?相关的知识,希望对你有一定的参考价值。
这就是问题所在(红色箭头所示的不需要的边距)。
这是实际的XAML。
<Ribbon DockPanel.Dock="Top">
这是补丁 (在我看来,这是一个工作,但一个黑客,而不是一个真正的解决方案)。
<Ribbon DockPanel.Dock="Top" Margin="0, -22, 0, 0">
有了补丁(对我来说更多的是黑客攻击)。
为什么在Ribbon的顶部有一个边框(边框空间),以及如何在不被黑客攻击的情况下正确地删除这个边框(对我来说,边框-22是一个黑客)?
应用了解决方案(Ed Bayiates解决方案)。
<Ribbon DockPanel.Dock="Top" x:Name="MyRibbon" SizeChanged="RibbonSizeChanged">
private void RibbonSizeChanged(object sender, SizeChangedEventArgs e)
{
ContentPresenter titlePanel = MyRibbon.Template.FindName("PART_TitleHost", MyRibbon) as ContentPresenter;
if (titlePanel != null)
{
double titleHeight = titlePanel.ActualHeight;
MyRibbon.Margin = new Thickness(MyRibbon.Margin.Left, -titleHeight, MyRibbon.Margin.Right, MyRibbon.Margin.Bottom);
}
}
答案
我想如果你在RibbonWindow而不是标准的Window中托管,问题区域会折叠到Window的标题栏中。
如果你不能做到这一点,有三个项目在该区域占据了同样的22像素空间。 一个是PART_TitleHost。 第二个是没有Name属性的DockPanel,第三个是没有Name属性的Border。 除非你把整个Ribbon重新模板化,否则我认为你不可能轻易地摆脱这些。 然而,如果你把y-margin设置成这个区域的精确大小,你可以让你的hacky少一点。 在后面的代码中,你可以得到标题栏的实际高度,并重新设置Ribbon栏的边距。
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
ContentPresenter titlePanel = Ribbon.Template.FindName("PART_TitleHost", Ribbon) as ContentPresenter;
if (titlePanel != null)
{
double titleHeight = titlePanel.ActualHeight;
Ribbon.Margin = new Thickness(Ribbon.Margin.Left, -titleHeight, Ribbon.Margin.Right, Ribbon.Margin.Bottom);
}
}
图片 橆 该代码。
图片 与 该代码。
以上是关于System.Windows.Controls.Ribbon的顶部有一个22px左右的边距(边框空格),为什么,如何正确去除?的主要内容,如果未能解决你的问题,请参考以下文章