【发布时间】:2010-07-15 10:43:16
【问题描述】:
我用 WPF 创建了这个简单的展开按钮用户控件:
我设计了 Width 和 Height 都设置为 100 的东西,这样我就可以看到我实际在做什么。此用户控件的精简 XAML 是:
<UserControl x:Class="Foobar.ExpandButton"
...
Width="100" Height="100">
...
<Border>
...
<Canvas>
<Line ... X1="20" Y1="20" X2="50" Y2="50"/>
<Line ... X1="80" Y1="20" X2="50" Y2="50"/>
<Line ... X1="20" Y1="50" X2="50" Y2="80"/>
<Line ... X1="80" Y1="50" X2="50" Y2="80"/>
</Canvas>
</Border>
</UserControl>
最终,按钮应该能够以各种尺寸正确显示,例如在 20 × 20 点。但是,由于Line 元素使用的坐标,我不能像这样在另一个窗口中插入这个用户控件:
<foobar:ExpandButton Width="20" Height="20" /> <!-- doesn't scale correctly! -->
我可以应用LayoutTransform → ScaleTransform,每次我使用不同于默认100 × 100 点的其他尺寸的元素,但必须有更好的解决方案。 p>
如何定义线条的坐标,使其相对于用户控件的总大小?
【问题讨论】:
-
另见:stackoverflow.com/questions/1026476/wpf-canvas-button 我很想知道,stakx,你使用的最终 xaml 是什么。
标签: wpf xaml coordinates scaling