WPF 项目版本控制以及布局控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF 项目版本控制以及布局控件相关的知识,希望对你有一定的参考价值。

参考技术A WPF 总结

使用场景:画板

Border

最基础的装饰控件

主要属性配置: CornerRadius 设置圆角

使用场景:绘制边线以及背景色 圆角 使用频繁

扩展布局控件

TabControl TabItem TabPanel

Toolbar Panel ToolbarOverflowPanel

VirtualizingStackPanel(虚拟化的StackPanel) 性能优

特殊容器

Scrollviewer

GroupBox

Expander

5、布局原理与自定义实践

6、布局实践

WPF:自定义控件布局

【中文标题】WPF:自定义控件布局【英文标题】:WPF: Custom control layout 【发布时间】:2013-08-24 15:03:09 【问题描述】:

我正在处理 WPF 中的自定义控件,该控件通过调用访问函数并将其自身作为访问者来实现 OnRender。该控件实现了适当地绘制线条、圆圈等的访问者界面。没有子控件。

这一切都有效,当控件呈现时,我可以看到从 OnRender 调用中呈现的基元。

但是,我正在努力控制由此产生的布局。 Image 控件完全符合我的要求。我如何复制这种行为?具体来说:

如果用户没有指定宽度或高度,我想设置控件的呈现宽度/高度(在我的构造函数中或从另一个控制布局的函数中)。 如果用户将宽度或高度设置为特定值,我想转换我的绘图以保留控件和绘图的纵横比。

我正在尝试使用 MeasureOverride 函数来实现我想要的行为,但我没有得到任何结果。我的控件布局为零宽度/高度,然后我的所有绘图都绘制在相邻控件的顶部。这是我目前正在尝试的,希望这能说明我正在尝试做的事情:

protected override Size MeasureOverride(Size constraint)

    SymbolLayout symbol = new SymbolLayout(this);
    component.LayoutSymbol(symbol);

    Point b1 = MapToPoint(symbol.LowerBound);
    Point b2 = MapToPoint(symbol.UpperBound);
    return new Size(b2.X - b1.X, b2.Y - b1.Y);

我什至不确定 MeasureOverride 是用来完成此任务的正确函数...

【问题讨论】:

【参考方案1】:

您还需要重写 ArrangeOverride 方法。 WPF 中的布局由一对递归操作 Measure 和 Arrange 执行。测量只是询问视觉树所有子控件所需的大小。这是递归完成的,因此如果您有子控件,则需要在所有子元素上调用 Measure 作为 Measure Override 的一部分。安排是框架告诉控件它实际获得多少空间的第二步。与测量一样,这是递归完成的,通常需要为每个子控件调用 Arrange(如果有)。

【讨论】:

以上是关于WPF 项目版本控制以及布局控件的主要内容,如果未能解决你的问题,请参考以下文章

《深入浅出WPF》学习总结之控件与布局

C# wpf 如何实现自定义控件,布局时,大小发生变化,内部绘制的曲线跟随变化?

WPF自学入门WPF-XAML布局控件

C#WinForm控件布局变乱问题

WPF界面布局——各种控件

WPF 自适应布局控件