问题标签 [actualwidth]

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 投票
1 回答
2047 浏览

wpf - 带有自定义绘图和 ActualWidth 的 WPF 自定义控件

我正在尝试使用自己的绘图逻辑创建一个自定义控件(从Control派生)。该控件只是从控件的左上角到右下角绘制一条对角线。此逻辑基于控件的ActualWidthActualHeight,它们仅在呈现控件 (AFAIK) 时可用。

我的问题是,有效地进行自定义绘图的正确方法是什么?

这方面的文档不多,恐怕我在做一些愚蠢或不必要的事情,比如每次触发 OnPropertyChanged 时强制刷新/重绘......

这是控件的模板:

这是逻辑:

0 投票
2 回答
1947 浏览

c# - 无法检索 ContentPresenter 的 ActualWidth / ActualHeight

在我的应用程序中,我们有一个视图模型对象,我们FrameworkElement使用我们的自定义函数从该对象中检索其附加GetVisualChildWithDataContext(见下文)。

发生的情况是,此函数返回一个ContentPresenter对象,其ActualWidthActualHeight属性为 0。由于我的内容由 24x24 矩形组成,因此我希望这 2 个属性的值为 24。

我的问题是,我怎样才能通过只有一个视图模型来检索我期望的值(ActualWidth和24)?ActualHeight如果有更好的方法可以做到这一点,我会全力以赴。

谢谢你的时间。(见下面的示例)

xml:

后面的代码:

0 投票
0 回答
172 浏览

wpf - 为什么视图框的实际宽度增长得比实际快得多?

ViewBoxes 中某些控件的一个常见问题是它们不会拉伸以填充 Viewbox,因此我尝试使用以下代码修复它:

起初,它似乎工作正常。但 Viewbox 的ActualWidth报告值变化比实际快得多。它从 74 开始,但使它变宽一个像素使其立即跳到接近 140,然后另一个像素使它跳到大约 260。然后它超过 400 并保持在这个值。

知道这里发生了什么吗?

0 投票
1 回答
4266 浏览

c# - 对象的 ActualHeight 和 ActualWidth 始终为零

我有一个Canvas这样的TextBlock

我的应用程序是这样的,当用户导航到此页面时,TextBlock将居中,Canvas如果TextBlock的宽度大于画布的宽度,则会出现选取框动画:

此方法称为 OnNavigatedTo。我不知道为什么TextBlock不会居中,因为ActualHeightandActualWidth属性总是返回为 0.0。我不想设置固定尺寸,因为这是一个 Windows 应用商店应用程序,并且希望它可以跨不同的屏幕尺寸进行缩放。

有任何想法吗?我被困住了。

0 投票
2 回答
786 浏览

.net - 绑定到 ListBoxItem 的 ActualWidth

我有一个ListBox,它基本上是一个画布。项目应显示为Rectangles。矩形的位置通过ListBoxItem's Canvas.LeftandCanvas.Right属性绑定到项目的数据。

这是ListBox' Template,它生成Canvas

ListBox' ItemContainerStyle设置项目的位置:

这实际上有效。当我ContentPresenter用边框包围时,边框具有正确的位置和大小。

现在,矩形Width应该等于ListBoxItem's实际宽度。所以ItemTemplate看起来像这样:

但是应用此绑定后,矩形永远不会显示。当我设置一个恒定的宽度时,一切都会正确呈现。

有没有办法在 中设置矩形的位置Canvas

更新

使用 WPF Tree Visualizer 我意识到这可能是ContentPresenter's ActualWidth. 以下屏幕截图显示Canvas.LeftandCanvas.Right属性设置正确: 树可视化器的屏幕截图

但是,该ActualWidth属性设置为 4(StrokeThickness包含的Rectangle是 4)。如何解决这个布局问题?

此外,我必须修改我的上述陈述。ContentPresenter用 a包围Border不会产生正确的结果。相反,整个布局似乎已损坏。

更新 2

MSDN 说如下:

子元素的 Canvas.Right 偏移量不会影响父 Canvas 的大小。

如果您指定它们,附加属性 Canvas.Top 或 Canvas.Left 优先于 Canvas.Bottom 或 Canvas.Right 属性

所以看来我必须明确指定宽度,这应该是适当转换器的一个小问题。

0 投票
1 回答
5416 浏览

wpf - 将 DataGridColumn 的 Width 属性绑定到父 DataGrid 的 ActualWidth

我试图通过手动绑定这里的属性来解决我之前的问题,这是我的 XAML 代码的第一个版本。WidthDataGridTextColumn

经过一番研究,我发现这篇文章似乎为我的问题提供了答案,我更新了我的DataGrid代码。

但现在我得到了这个 XamlParseException

那么如何将 a 的Width属性绑定到其父级DataGridColumn的属性ActualWidthDataGrid

0 投票
1 回答
3359 浏览

.net - 如何在窗口显示之前计算 ActualWidth ActualHeight

我试图在窗口显示之前计算StackPanel width, height(位于网格的中间单元格)(例如在窗口构造函数中)。如何实现?

测量 Window 也为 stackPanel 设置DesiredSize{0;0}

编辑1

以下适用于 FixedPage:

然后我们可以访问stackPanel.ActualWidthstackpanel.ActualHeight

但是对于Window,它不起作用。

0 投票
2 回答
1511 浏览

wpf - 当宽度设置为一个值时,为什么实际宽度为零。WPF

我有一个扩展Canvas. 在创建时,我明确地将其宽度设置为一个值:

cnvPreview.Children.Add(e)现在我使用where eis the instance of my extended canvas 将它的实例添加到画布到另一个画布。

但是,当我运行应用程序时,这些画布的 and 为 0 ActualWidthActualHeight

如何解决这个问题?

0 投票
1 回答
474 浏览

silverlight - 动态绑定时边框的实际高度/实际宽度不符合预期

我在 aGrid中有两个边框UserControl。第一个边框在第一行,第二个边框在第二行。

我将值动态绑定到行定义,以便边框高度也适合行高。

当我UserControl从 ViewModel 创建一个对象并在其后面的代码中调用一个方法时,我没有得到边框的原始高度(我期望的是我给出的值)并且它显示两个边框的网格高度的一半长度。一段时间后,边框大小更改为我所期望的。

我想从一开始就检索正确的值。我能做些什么来实现这种行为?

这是我的代码背后的方法。这个方法是从我的ViewModel. SizeChanged只有在边框事件之后,我才能获得确切的实际宽度和高度。

0 投票
2 回答
642 浏览

.net - 网格中自定义控件的 ActualWidth 和 ActualHeight 为零,即使在测量/排列之后

我有一个带有自定义控件 GameView 的 Win8 应用程序,我在我的页面上实例化了 3 次(作为 gvMap、gvOurBase 和 gvEnemyBase),并将其放入网格中。我需要获取控件的实际大小,以便可以设置 RenderTransform 并以适当的缩放比例渲染所有内容。

但是,每当我尝试获取控件的ActualWidthorActualHeight时,我总是得到零。即使我等到页面加载并在我的控件上调用 Measure and Arrange 也会发生这种情况。

如何获得控件的大小?或者当他们在网格中时我不允许这样做吗?是否有另一种方法可以让我执行不依赖于控件大小的 RenderTransform?我希望每个控件显示整个游戏地图的特定部分 - gvMap 显示整个地图,gvOurBase 显示玩家拥有城市的地图部分,而 gvEnemyBase 显示敌人拥有城市的地图部分。