我想为窗口选项卡创建一个 WPF 控件,并且我希望它具有特定的形状。像这样的东西;
+------------------------------+
| |
* | |
| |
+--+ +--+
6 | | 6
+------------------------------------+
6 stretching section 6
所以左下角和右下角的小标签是固定大小的;大约 6x6。但现在我希望中心部分拉伸(stretch)到我拍它的任何容器的宽度。
我目前正在使用 Path 对象,但我不知道如何获得拉伸(stretch)部分,或者即使 Path 是正确的方法。
谁能建议创建这种半可拉伸(stretch)形状的最佳方法?
最佳答案
我通过创建一个继承自 StackPanel 的“StretchStackPanel”在我的应用程序中完成了拉伸(stretch)部分。该类如下所示:
public class StretchStackPanel : StackPanel
{
public static DependencyProperty StretchDependencyProperty = DependencyProperty.Register("Stretch", typeof(StretchMode), typeof(StretchStackPanel));
protected override Size MeasureOverride(Size availableSize)
{
var baseSize = base.MeasureOverride(availableSize);
if (availableSize.Width != double.PositiveInfinity && (Stretch & StretchMode.Horizontal) == StretchMode.Horizontal )
{
baseSize.Width = availableSize.Width;
}
if (availableSize.Height != double.PositiveInfinity && (Stretch & StretchMode.Vertical) == StretchMode.Vertical)
{
baseSize.Height = availableSize.Height;
}
return baseSize;
}
protected override Size ArrangeOverride(Size finalSize)
{
var baseSize = base.ArrangeOverride(finalSize);
if ((Stretch & StretchMode.Horizontal) == StretchMode.Horizontal )
{
baseSize.Width = finalSize.Width;
}
if ((Stretch & StretchMode.Vertical) == StretchMode.Vertical)
{
baseSize.Height = finalSize.Height;
}
return baseSize;
}
[Category("Layout")]
public StretchMode Stretch
{
get
{
return (StretchMode)GetValue(StretchDependencyProperty);
}
set
{
SetValue(StretchDependencyProperty, value);
}
}
}
你想要的是一个有 2 行的网格。顶行的内容应将其水平对齐设置为居中。最下面一行的内容应该是一个 StretchStackPanel。
关于wpf - 如何创建在某些地方延伸的 WPF 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540969/