问题标签 [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.
wpf - 带有自定义绘图和 ActualWidth 的 WPF 自定义控件
我正在尝试使用自己的绘图逻辑创建一个自定义控件(从Control派生)。该控件只是从控件的左上角到右下角绘制一条对角线。此逻辑基于控件的ActualWidth和ActualHeight,它们仅在呈现控件 (AFAIK) 时可用。
我的问题是,有效地进行自定义绘图的正确方法是什么?
这方面的文档不多,恐怕我在做一些愚蠢或不必要的事情,比如每次触发 OnPropertyChanged 时强制刷新/重绘......
这是控件的模板:
这是逻辑:
c# - 无法检索 ContentPresenter 的 ActualWidth / ActualHeight
在我的应用程序中,我们有一个视图模型对象,我们FrameworkElement
使用我们的自定义函数从该对象中检索其附加GetVisualChildWithDataContext
(见下文)。
发生的情况是,此函数返回一个ContentPresenter
对象,其ActualWidth
和ActualHeight
属性为 0。由于我的内容由 24x24 矩形组成,因此我希望这 2 个属性的值为 24。
我的问题是,我怎样才能通过只有一个视图模型来检索我期望的值(ActualWidth
和24)?ActualHeight
如果有更好的方法可以做到这一点,我会全力以赴。
谢谢你的时间。(见下面的示例)
xml:
后面的代码:
wpf - 为什么视图框的实际宽度增长得比实际快得多?
ViewBoxes 中某些控件的一个常见问题是它们不会拉伸以填充 Viewbox,因此我尝试使用以下代码修复它:
起初,它似乎工作正常。但 Viewbox 的ActualWidth
报告值变化比实际快得多。它从 74 开始,但使它变宽一个像素使其立即跳到接近 140,然后另一个像素使它跳到大约 260。然后它超过 400 并保持在这个值。
知道这里发生了什么吗?
c# - 对象的 ActualHeight 和 ActualWidth 始终为零
我有一个Canvas
这样的TextBlock
:
我的应用程序是这样的,当用户导航到此页面时,TextBlock
将居中,Canvas
如果TextBlock
的宽度大于画布的宽度,则会出现选取框动画:
此方法称为 OnNavigatedTo。我不知道为什么TextBlock
不会居中,因为ActualHeight
andActualWidth
属性总是返回为 0.0。我不想设置固定尺寸,因为这是一个 Windows 应用商店应用程序,并且希望它可以跨不同的屏幕尺寸进行缩放。
有任何想法吗?我被困住了。
.net - 绑定到 ListBoxItem 的 ActualWidth
我有一个ListBox
,它基本上是一个画布。项目应显示为Rectangles
。矩形的位置通过ListBoxItem's
Canvas.Left
andCanvas.Right
属性绑定到项目的数据。
这是ListBox'
Template
,它生成Canvas
:
ListBox'
ItemContainerStyle
设置项目的位置:
这实际上有效。当我ContentPresenter
用边框包围时,边框具有正确的位置和大小。
现在,矩形Width
应该等于ListBoxItem's
实际宽度。所以ItemTemplate
看起来像这样:
但是应用此绑定后,矩形永远不会显示。当我设置一个恒定的宽度时,一切都会正确呈现。
有没有办法在 中设置矩形的位置Canvas
?
更新
使用 WPF Tree Visualizer 我意识到这可能是ContentPresenter's
ActualWidth
. 以下屏幕截图显示Canvas.Left
andCanvas.Right
属性设置正确:
但是,该ActualWidth
属性设置为 4(StrokeThickness
包含的Rectangle
是 4)。如何解决这个布局问题?
此外,我必须修改我的上述陈述。ContentPresenter
用 a包围Border
不会产生正确的结果。相反,整个布局似乎已损坏。
更新 2
MSDN 说如下:
子元素的 Canvas.Right 偏移量不会影响父 Canvas 的大小。
如果您指定它们,附加属性 Canvas.Top 或 Canvas.Left 优先于 Canvas.Bottom 或 Canvas.Right 属性
所以看来我必须明确指定宽度,这应该是适当转换器的一个小问题。
.net - 如何在窗口显示之前计算 ActualWidth ActualHeight
我试图在窗口显示之前计算StackPanel
width
, height
(位于网格的中间单元格)(例如在窗口构造函数中)。如何实现?
测量 Window 也为 stackPanel 设置DesiredSize
为{0;0}
编辑1
以下适用于 FixedPage:
然后我们可以访问stackPanel.ActualWidth
和stackpanel.ActualHeight
。
但是对于Window,它不起作用。
wpf - 当宽度设置为一个值时,为什么实际宽度为零。WPF
我有一个扩展Canvas
. 在创建时,我明确地将其宽度设置为一个值:
cnvPreview.Children.Add(e)
现在我使用where e
is the instance of my extended canvas 将它的实例添加到画布到另一个画布。
但是,当我运行应用程序时,这些画布的 and 为 0 ActualWidth
。ActualHeight
如何解决这个问题?
silverlight - 动态绑定时边框的实际高度/实际宽度不符合预期
我在 aGrid
中有两个边框UserControl
。第一个边框在第一行,第二个边框在第二行。
我将值动态绑定到行定义,以便边框高度也适合行高。
当我UserControl
从 ViewModel 创建一个对象并在其后面的代码中调用一个方法时,我没有得到边框的原始高度(我期望的是我给出的值)并且它显示两个边框的网格高度的一半长度。一段时间后,边框大小更改为我所期望的。
我想从一开始就检索正确的值。我能做些什么来实现这种行为?
这是我的代码背后的方法。这个方法是从我的ViewModel
. SizeChanged
只有在边框事件之后,我才能获得确切的实际宽度和高度。
.net - 网格中自定义控件的 ActualWidth 和 ActualHeight 为零,即使在测量/排列之后
我有一个带有自定义控件 GameView 的 Win8 应用程序,我在我的页面上实例化了 3 次(作为 gvMap、gvOurBase 和 gvEnemyBase),并将其放入网格中。我需要获取控件的实际大小,以便可以设置 RenderTransform 并以适当的缩放比例渲染所有内容。
但是,每当我尝试获取控件的ActualWidth
orActualHeight
时,我总是得到零。即使我等到页面加载并在我的控件上调用 Measure and Arrange 也会发生这种情况。
如何获得控件的大小?或者当他们在网格中时我不允许这样做吗?是否有另一种方法可以让我执行不依赖于控件大小的 RenderTransform?我希望每个控件显示整个游戏地图的特定部分 - gvMap 显示整个地图,gvOurBase 显示玩家拥有城市的地图部分,而 gvEnemyBase 显示敌人拥有城市的地图部分。