- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Canvas
中有一个 Grid
,定义如下:
<Canvas x:Name="outerCanvas">
<Grid Grid.Row="1" Name="cGrid" ShowGridLines="True" Width="{Binding Path=ActualWidth, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Name="rectangle1" Stroke="Black" Fill="AntiqueWhite" />
<Rectangle Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle2" Stroke="Black" Fill="AliceBlue" />
<Rectangle Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="1" Grid.RowSpan="1" Name="rectangle3" Stroke="Black" Fill="Aqua" />
<Rectangle Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Grid.RowSpan="1" Name="rectangle4" Stroke="Black" Fill="DarkViolet" />
</Grid>
</Canvas>
我的问题是,在 Window 构造函数上,在 InitializeComponents()
之后,Grid.ColumnDefinitions[0].ActualWidth
或“任何矩形”。ActualWidth
均设置为 0.0(高度相同)。我不知道该怎么做才能获取这些信息。有什么帮助吗?
观察结果:
Canvas/Grid
占据了整个窗口空间,因此其中的每个矩形都有 ActualWidth
和 ActualHeight
s最佳答案
ActualHeight
和ActualWidth
在测量和布置控件之前不会设置。通常 InitializeComponent()
中没有任何内容。这会导致测量,因此当它返回时,这些值仍然为零。
您可以通过简单地调用窗口的 Measure()
来强制提前计算这些值。和Arrange()
在窗口 InitializeComponent()
之后手动调用方法返回。
如果您要根据内容调整大小:
window.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
window.Arrange(new Rect(0, 0, window.DesiredSize.Width, window.DesiredSize.Height));
如果您使用明确的窗口大小:
window.Measure(new Size(Width, Height));
window.Arrange(new Rect(0, 0, window.DesiredSize.Width, window.DesiredSize.Height));
关于wpf - 在这种情况下,为什么 ActualWidth 和 ActualHeight 为 0.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695101/
我正在尝试在窗口显示之前计算 StackPanel width, height(位于网格的中间单元格)(例如窗口构造函数)。如何实现?
我在运行时创建了一个 StackPanel,我想像这样测量 StackPanel 的 Height: StackPanel panel = new StackPanel(); panel.Childr
我尝试创建一个具有半透明圆形背景的自定义控件: 问题是我可能无法绑定(bind)到 ActualHeight/ActualWidth 属性,因为它们不是依赖项。 如何使矩形和文
我有一个带有 TextBlock 的 Canvas,如下所示: 我
不,我没有像其他许多人一样将 ActualHeight 设置为零的问题。在我的 Windows 应用商店应用程序 (WinRT) 中,我在调试器中看到了这一点: ActualHeight | 50.7
我需要一个 Viewport3D仅用于使用 Petzold.Media3D.ViewportInfo 进行几何计算.我宁愿不必将它放在 Window 中。或以其他方式呈现它。 我试图通过实例化 Vie
我有两个单独的 ItemsControl s 并排出现。 ItemsControl s 绑定(bind)到同一个 ItemsSource ,但它们以不同的方式显示数据。 左侧显示的每个项目很可能比右侧
我想将 WPF 路径添加到 InkCanvas并使用选择来选择 WPF 路径。 所以,我使用这个代码。 System.Windows.Shapes.Path path = drawCanvas.Chi
最近我遇到了一个看似简单的问题:我想在我正在处理的一个应用程序中使用 Mode=OneWayToSource 将 Canvas 的 Width 和 Height 参数推送到 ViewModel 中。原
我在 Canvas 中有一个 Grid ,定义如下:
我想知道我的 StackPanel 所有项目的高度。 有什么区别: Height - 获取或设置元素的建议高度。 ActualHeight - 获取该元素的渲染高度。 (只读) ExtentHeigh
我是一名优秀的程序员,十分优秀!