问题标签 [measureoverride]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1999 浏览

wpf - ElementFlow:MeasureOverride 中的异常

我正在尝试在我的应用程序中使用 FluidKits ElementFlow-control,但在 ElementFlow 的 MeasureOverride 方法中出现异常。

元素“FluidKit.Controls.ElementFlow”的布局测量覆盖不应返回 PositiveInfinity 作为其 DesiredSize,即使 Infinity 作为可用大小传入也是如此。

在 FluidKit 之后的示例应用程序中,一切正常。当调用 MeasureOverride 时,availableSize-struct 会使用控件的边界进行初始化,但在我的应用程序中,它带有宽度和高度的 INF。

我试图找出示例和我的应用程序之间的不同之处,但两者都是一个带有网格的窗口,该窗口带有一个使用 ElementFlow for ItemsPanel 的列表框。

我发现其他人在同样的异常中苦苦挣扎,但除了给列表框一个明确的大小之外,我还没有找到任何解决方案。但我不想给它一个大小,我希望网格来管理它的布局。

有什么建议么?

0 投票
5 回答
6430 浏览

wpf - 如何设置 UIElement 的 DesiredSize.Width?

我需要在自定义面板中计算Width每个。UIElement如果循环Children

我不能这样做child.DesiredSize.Width = myCalculatedWidth;DesiredSize并且DesiredSize.Width是只读的。

文档说Measure()更新了DesiredSizeUIElement所以我尝试了:

child.DesiredSize.Width不变。我该如何设置DesiredSize.Width

0 投票
1 回答
772 浏览

wpf - 在动画期间或之后未调用 WPF InvalidateMeasure

我有一个具有以下 ListBoxItem 样式的自定义 ListBox。它包含一些动画以在鼠标悬停在 ListBoxItem 上时对其进行缩放。

我为我的 ListBox 有自己的 MeasureOverride 实现,它被调用并且一切都很好,除了在缩放 ListBoxItem 之前没有调用 MeasureOverride,因此它请求的大小比所需的小得多。

动画完成后,我尝试在 ListBox 上调用 InvalidateMeasure,但未触发 MeasureOverride 方法。目前我正在我的 ControlTemplate 中的 Grid 上应用动画,这是导致 MeasureOverride 不被调用的原因吗?如何在控件本身上应用相同的动画?

0 投票
1 回答
2092 浏览

wpf - 覆盖 MeasureOverride 和 ArrangeOverride 时不绘制 WPF UserControl

我有一个看起来像这样的 UserControl:

除了最小/最大尺寸约束之外,我还希望控件始终使用Width = Height. 所以我覆盖MeasureOverrideArrangeOverride

我知道我必须调用UserControlMeasureArrange每个子项。由于 DocPanel 是我的 UserControl 的唯一子项,并且(在我的理解中)存储在 UserControl 的属性中,Content因此我只需调用此 Content 属性即可。但是不显示 UserControl。我究竟做错了什么?MeasureArrange

0 投票
1 回答
743 浏览

wpf - WPF布局以2为增量重复调用MeasureOverride?

我遇到了一个案例,我有一个自定义面板(从面板继承)并且我将它用作 ListView 中的 ItemsPanel。

当我调整它所在的容器的大小时,如果我把它调整得更小,我的面板的 MeasureOverride 函数会被调用一次,但是如果我把它调整得更大(比如说从 100 到 300),它会为 100 到 300 之间的每个值调用 MeasureOverride 和 ArrangeOverride ,以 2 为增量(如 102、104 等)。

奇怪的是容器立即调整大小(它的大小立即变为 300)。

我从 MeasureOverride 返回什么似乎并不重要——它就是这样做的。

我希望我可以在一个非常小的应用程序中实现它并将其发布在这里,但我还不能像那样复制它。不过,我可以整天在我的应用程序中重现它。

有谁知道这可能是什么原因?

0 投票
4 回答
942 浏览

wpf - WPF C# 自定义控件——如何让孩子遵循严格的尺寸(伸展)

我不知道该怎么做,但我创建了一个自定义 Panel FooPanel。我希望我的 FooPanel 强制所有孩子都适合面板预定的尺寸(这样它们是统一的)。我知道,UniformGrid但我也有一些其他的东西。

我不知道如何强迫孩子们适应我告诉他们的盒子。


Child.xaml:

0 投票
2 回答
802 浏览

wpf - 在 WPF 中使用数据绑定的控件上的自定义测量/排列算法

我正在为自定义编辑器编写排列/测量算法。编辑器使用自定义 UserControl 派生类作为画布上的控件。这些控件是绑定到我的数据模型对象上的各种属性/列表的数据。自定义控件的测量和排列高度依赖于绑定的数据(因为数据会影响控件的大小),并且还取决于测量和排列控件的顺序。根据我从 MSDN 上的 WPF 文档中能够确定的内容,数据绑定直到之后才真正执行控件被测量和排列,并且在控件被标记为已加载之前。据我所知,这意味着我必须等待所有控件都加载完毕,然后才能实际测量和安排我的自定义画布。结果,我发现自己必须在画布中设置标志以确定何时可以和不能测量/排列它,并使用这些标志来强制失效和重绘。有没有更好的方法在我不知道的画布上进行自定义测量/排列?无论如何强制 WPF 中的早期数据绑定?

0 投票
2 回答
3424 浏览

wpf - Panel.Children 与 Panel.InternalChildren - 有什么区别?

根据MSDN - Panel.InternalChildren 属性

从Panel派生的类 应该使用此属性,而不是Children 属性,用于内部覆盖,例如MeasureCoreArrangeCore


所以,这真的是一个两部分的问题:

  1. 如果我创建自己的面板FooPanel,它派生自Panel,我似乎无法覆盖MeasureCoreArrangeCore。我不确定为什么会出现这种说法。但是,我可以覆盖MeasureOverrideand ArrangeOverride。所以,我想知道我是否还需要InternalChildren为这两种方法使用该属性。

  2. Children财产和财产之间的真正区别是什么InternalChildren

0 投票
3 回答
1165 浏览

silverlight - 如何在 Silverlight 中使用 MeasureOverride?

我想我已经了解 MeasureOverrride 的工作原理,但我试图在一个非常简单的情况下使用它并且它不起作用......所以现在我不太确定......使用 MeasureOverride 后我是否必须使用 Arrageoverride还是系统会为我做?情况是这样的:我有一个从 Panel 继承的 LinearLayout 类,它有两个名为 wrapwidht 和 wrapheigh 的字段,如果它们为 true,则 LinearLayout 的宽度或高度必须与其子级要求相同。所以我的 Measureoveride 看起来像:

我正在使用 LinerLayout 的孩子是 3 个按钮,但没有绘制任何内容..即使 panelDesiredSize 归档是正确的..所以也许我不明白它是如何工作的。如果有人可以帮助我会非常好:-)

0 投票
1 回答
787 浏览

layout - 布局系统何时调用 ArrangeOverride 和 Arrange()?

我试图了解Silverlight中的布局系统,但我真的不知道该过程是如何工作的。我知道 Measure 总是在所有措施完成之前被调用,然后arrange开始。但是这个过程究竟是什么时候开始的,我们能够控制它吗?

请不要写MSDN库链接,我已经看过了,一点都不清楚。

我的具体情况是我有一些嵌套(从和工作LinearLayouts继承一个类)但我需要大小(因为它们的大小是父级的百分比),直到所有元素都加载到树中我才能得到它,所以我调用了LayoutRoot_Loaded。它可以工作,是的,但是它完成了 3 次布局过程,这对整个系统来说效率不高......有人可以帮助或至少解释一下布局系统如何完全由程序员管理吗?:-)PanelArrangeoverrideMEasureoverriderootcontainerarrange()