【发布时间】:2015-05-23 03:02:35
【问题描述】:
我在 Grid.Row 和 Grid.Column 内绘制了一个椭圆。行总是比列宽高。
我想画一个椭圆,填充网格列的宽度,谁的高度使它成为一个完美的圆。
我还想在上面椭圆的中心画一个数字。基本上以一个以数字为中心的圆圈结束。
我可以轻松地在我的 Ellipse 和包含数字的 TextBlock 上设置 HorizontalAlignment="Stretch"。这照顾了我的宽度。但是,即使 Grid.Column 宽度发生变化,如何让 Ellipse 和 TextBlock 的高度始终匹配其宽度?
这里有一些 XAML 来说明这一点。在下面的 XAML 中,我希望硬编码的“63”基于 Grid.Column 宽度或椭圆的 Width 字段:
<Ellipse Grid.Row="1" Grid.Column="0" HorizontalAlignment="Stretch" Height="63" Stroke="Black" StrokeThickness="3" VerticalAlignment="Top"/>
<TextBlock Grid.Row="1" Grid.Column="0" Width="63" Height="63" VerticalAlignment="Top" Text="1" TextAlignment="Center" FontSize="42" FontWeight="Bold"/>
感谢您的所有帮助。我最终使用了 Herdo 的答案。只需将 HorizontalAlignment 设置为 Stretch,然后将高度绑定到椭圆的实际宽度。我对椭圆和文本块做了同样的事情:
<Ellipse HorizontalAlignment="Stretch" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
<TextBlock HorizontalAlignment="Stretch" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"/>
【问题讨论】:
-
把 Ellipse 和 TextBlock 放到一个共同的 Grid 中也可以解决文本居中问题。
标签: c# wpf binding textblock ellipse