问题标签 [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.
wpf - ElementFlow:MeasureOverride 中的异常
我正在尝试在我的应用程序中使用 FluidKits ElementFlow-control,但在 ElementFlow 的 MeasureOverride 方法中出现异常。
元素“FluidKit.Controls.ElementFlow”的布局测量覆盖不应返回 PositiveInfinity 作为其 DesiredSize,即使 Infinity 作为可用大小传入也是如此。
在 FluidKit 之后的示例应用程序中,一切正常。当调用 MeasureOverride 时,availableSize-struct 会使用控件的边界进行初始化,但在我的应用程序中,它带有宽度和高度的 INF。
我试图找出示例和我的应用程序之间的不同之处,但两者都是一个带有网格的窗口,该窗口带有一个使用 ElementFlow for ItemsPanel 的列表框。
我发现其他人在同样的异常中苦苦挣扎,但除了给列表框一个明确的大小之外,我还没有找到任何解决方案。但我不想给它一个大小,我希望网格来管理它的布局。
有什么建议么?
wpf - 如何设置 UIElement 的 DesiredSize.Width?
我需要在自定义面板中计算Width
每个。UIElement
如果循环Children
:
我不能这样做child.DesiredSize.Width = myCalculatedWidth;
,DesiredSize
并且DesiredSize.Width
是只读的。
文档说Measure()
更新了DesiredSize
,UIElement
所以我尝试了:
但child.DesiredSize.Width
不变。我该如何设置DesiredSize.Width
?
wpf - 在动画期间或之后未调用 WPF InvalidateMeasure
我有一个具有以下 ListBoxItem 样式的自定义 ListBox。它包含一些动画以在鼠标悬停在 ListBoxItem 上时对其进行缩放。
我为我的 ListBox 有自己的 MeasureOverride 实现,它被调用并且一切都很好,除了在缩放 ListBoxItem 之前没有调用 MeasureOverride,因此它请求的大小比所需的小得多。
动画完成后,我尝试在 ListBox 上调用 InvalidateMeasure,但未触发 MeasureOverride 方法。目前我正在我的 ControlTemplate 中的 Grid 上应用动画,这是导致 MeasureOverride 不被调用的原因吗?如何在控件本身上应用相同的动画?
wpf - 覆盖 MeasureOverride 和 ArrangeOverride 时不绘制 WPF UserControl
我有一个看起来像这样的 UserControl:
除了最小/最大尺寸约束之外,我还希望控件始终使用Width = Height
. 所以我覆盖MeasureOverride
和ArrangeOverride
:
我知道我必须调用UserControlMeasure
的Arrange
每个子项。由于 DocPanel 是我的 UserControl 的唯一子项,并且(在我的理解中)存储在 UserControl 的属性中,Content
因此我只需调用此 Content 属性即可。但是不显示 UserControl。我究竟做错了什么?Measure
Arrange
wpf - WPF布局以2为增量重复调用MeasureOverride?
我遇到了一个案例,我有一个自定义面板(从面板继承)并且我将它用作 ListView 中的 ItemsPanel。
当我调整它所在的容器的大小时,如果我把它调整得更小,我的面板的 MeasureOverride 函数会被调用一次,但是如果我把它调整得更大(比如说从 100 到 300),它会为 100 到 300 之间的每个值调用 MeasureOverride 和 ArrangeOverride ,以 2 为增量(如 102、104 等)。
奇怪的是容器立即调整大小(它的大小立即变为 300)。
我从 MeasureOverride 返回什么似乎并不重要——它就是这样做的。
我希望我可以在一个非常小的应用程序中实现它并将其发布在这里,但我还不能像那样复制它。不过,我可以整天在我的应用程序中重现它。
有谁知道这可能是什么原因?
wpf - WPF C# 自定义控件——如何让孩子遵循严格的尺寸(伸展)
我不知道该怎么做,但我创建了一个自定义 Panel FooPanel
。我希望我的 FooPanel 强制所有孩子都适合面板预定的尺寸(这样它们是统一的)。我知道,UniformGrid
但我也有一些其他的东西。
我不知道如何强迫孩子们适应我告诉他们的盒子。
Child.xaml:
wpf - 在 WPF 中使用数据绑定的控件上的自定义测量/排列算法
我正在为自定义编辑器编写排列/测量算法。编辑器使用自定义 UserControl 派生类作为画布上的控件。这些控件是绑定到我的数据模型对象上的各种属性/列表的数据。自定义控件的测量和排列高度依赖于绑定的数据(因为数据会影响控件的大小),并且还取决于测量和排列控件的顺序。根据我从 MSDN 上的 WPF 文档中能够确定的内容,数据绑定直到之后才真正执行控件被测量和排列,并且在控件被标记为已加载之前。据我所知,这意味着我必须等待所有控件都加载完毕,然后才能实际测量和安排我的自定义画布。结果,我发现自己必须在画布中设置标志以确定何时可以和不能测量/排列它,并使用这些标志来强制失效和重绘。有没有更好的方法在我不知道的画布上进行自定义测量/排列?无论如何强制 WPF 中的早期数据绑定?
wpf - Panel.Children 与 Panel.InternalChildren - 有什么区别?
根据MSDN - Panel.InternalChildren 属性:
从Panel派生的类 应该使用此属性,而不是Children 属性,用于内部覆盖,例如MeasureCore 和ArrangeCore。
所以,这真的是一个两部分的问题:
如果我创建自己的面板
FooPanel
,它派生自Panel
,我似乎无法覆盖MeasureCore
或ArrangeCore
。我不确定为什么会出现这种说法。但是,我可以覆盖MeasureOverride
andArrangeOverride
。所以,我想知道我是否还需要InternalChildren
为这两种方法使用该属性。Children
财产和财产之间的真正区别是什么InternalChildren
?
silverlight - 如何在 Silverlight 中使用 MeasureOverride?
我想我已经了解 MeasureOverrride 的工作原理,但我试图在一个非常简单的情况下使用它并且它不起作用......所以现在我不太确定......使用 MeasureOverride 后我是否必须使用 Arrageoverride还是系统会为我做?情况是这样的:我有一个从 Panel 继承的 LinearLayout 类,它有两个名为 wrapwidht 和 wrapheigh 的字段,如果它们为 true,则 LinearLayout 的宽度或高度必须与其子级要求相同。所以我的 Measureoveride 看起来像:
我正在使用 LinerLayout 的孩子是 3 个按钮,但没有绘制任何内容..即使 panelDesiredSize 归档是正确的..所以也许我不明白它是如何工作的。如果有人可以帮助我会非常好:-)
layout - 布局系统何时调用 ArrangeOverride 和 Arrange()?
我试图了解Silverlight中的布局系统,但我真的不知道该过程是如何工作的。我知道 Measure 总是在所有措施完成之前被调用,然后arrange
开始。但是这个过程究竟是什么时候开始的,我们能够控制它吗?
请不要写MSDN库链接,我已经看过了,一点都不清楚。
我的具体情况是我有一些嵌套(从和工作LinearLayouts
继承一个类)但我需要大小(因为它们的大小是父级的百分比),直到所有元素都加载到树中我才能得到它,所以我调用了LayoutRoot_Loaded。它可以工作,是的,但是它完成了 3 次布局过程,这对整个系统来说效率不高......有人可以帮助或至少解释一下布局系统如何完全由程序员管理吗?:-)Panel
Arrangeoverride
MEasureoverride
rootcontainer
arrange()