我有一个必须调整其StackPanel容器大小的路径。
<StackPanel x:Name="TrackSurface">
<Path Fill="AliceBlue"
Stroke="Black" StrokeThickness="1"
Data="{StaticResource TranslateZ}">
</Path>
</StackPanel>
我考虑使用绑定到容器的转换但实际上不知道如何实现。有人可以给我提示吗?
答案 0 :(得分:25)
我将Stackpanel更改为Path to Fill的Grid和Stretch属性。
<Grid x:Name="TrackSurface">
<Path Fill="AliceBlue"
Stretch="Fill"
Stroke="Black" StrokeThickness="1"
Data="M148,28 C221,133 110.50025,119.5 110.50025,119.5 L124.50016,68.5 z">
</Path>
答案 1 :(得分:19)
您为什么不使用ViewBox?这将根据需要缩小或增长路径。如果您不想缩放,而是剪裁,则将剪辑模式设置为限制在控件的边界框中。 (我为此在ContentPresenter中包装路径。)
答案 2 :(得分:3)
确保您的路径小于StackPanel。
一个非常简单的路径的最简单方法是在每个数字中移动逗号(即在TranslateZ中将所有内容除以10或100),或者对于更复杂的路径添加LayoutTransform(根据需要降低缩放因子):
<StackPanel x:Name="TrackSurface">
<Path Fill="AliceBlue" Stroke="Black" StrokeThickness="1"
Data="{StaticResource TranslateZ}">
<Path.LayoutTransform>
<ScaleTransform ScaleX="0.1" ScaleY="0.1"/>
</Path.LayoutTransform>
</Path>
</StackPanel>
一些备注:
我遇到了类似的问题,其中包含一个包含路径的按钮模板。 按钮的“自动”大小由路径决定,因为路径 具有最大尺寸的模板内容。
这本身可能不会成为一个问题,因为如果你指定 按钮的高度/宽度,或者按钮的高度/宽度 Horizontal- / VerticalAlignment设置为拉伸,当然是路径 会扩大规模。
但是,对于Horizontal- / VerticalAlignment的其他值,按钮 大小取决于其内容所需的空间量, 在我的情况下,这导致了一个带有路径原始的按钮 尺寸。
答案 3 :(得分:0)
如果您想要使用不缩放的恒定笔触宽度,则可以使用自定义Shape
。 WPF中的形状有效地封装了几何的缩放并在之后应用了笔划,这意味着您可以使用一个也始终具有相同笔划宽度的缩放路径。
创建形状非常简单:
public class MyShape : Shape
{
public override Geometry DefiningGeometry
{
get
{
// Create your geometry here
}
}
}