【发布时间】:2023-03-07 11:56:01
【问题描述】:
我刚刚开始研究 wpf 中的自定义控件。我创建了一个从 Frameworkelement 继承的控件,并且正在绘制内容。内容大于窗口的高度。即使将控件放在滚动查看器中,滚动也不会出现。
【问题讨论】:
标签: wpf scroll custom-controls scrollviewer
我刚刚开始研究 wpf 中的自定义控件。我创建了一个从 Frameworkelement 继承的控件,并且正在绘制内容。内容大于窗口的高度。即使将控件放在滚动查看器中,滚动也不会出现。
【问题讨论】:
标签: wpf scroll custom-controls scrollviewer
由于您从 Framework Element 继承并使用 DrawingContext 绘制内容,因此控件可能无法正确测量。您应该了解 WPF 的布局系统。 WPF 关注two pass layout system。测量和安排。在 Measure Override 中,您需要告诉控件需要多少尺寸。在排列中,您需要将控件放置在正确的矩形中。
以下情况将 300x300 像素返回给控件。您可能需要根据渲染内容的逻辑来计算大小
protected override Size MeasureOverride(Size availableSize)
{
return new Size(300, 300);
}
【讨论】:
设置:
ScrollViewer.VerticalScrollBarVisibility="Visible"
在您的自定义控件上。另外:
ScrollViewer.CanContentScroll="True"
【讨论】: