有没有办法让XAML属性与它们所属的元素大小一起缩放?

本质上,我有一个控件模板,我创建的太大而无法使用/主要是因为我想使用不同大小的相同控件。问题是我可以将控件大小设置为Auto(在ControlTemplate中),但是intrisic模板元素的属性不会调整大小:例如,StrokeThickness保持在10而它应该变为1.

当我在模板上应用ScaleTransform时它工作正常,但是当它实际使用时会导致控件太小:宽度/高度=自动将控件的大小调整为适当的大小然后应用scaletransform。所以我有一种不可控制的控制。

我对WPF有点新意,所以可能有一种直接的方法来做到这一点......

有帮助吗?

解决方案

您可以尝试将模板内控件的宽度和高度分别绑定到运行时模板化控件的宽度和高度。类似的东西:

<Button>
    <Button.Template>
        <ControlTemplate TargetType={x:Type Button}>
            <Border Width="{TemplateBinding Property=ActualWidth}"
                    Height="{TemplateBinding Property=ActualHeight}">
                <ContentPresenter />
             </Border>
         </ControlTemplate>
    </Button.Template>
</Button>

请注意,绑定源是模板化控件的 FrameworkElement.ActualWidth FrameworkElement.ActualHeight 属性。这些属性包含控件渲染后的宽度和高度,可以与宽度高度属性中指定的不同。这是因为这些值最终是在运行时计算的,并考虑了可视化树中任何父控件的大小。

其他提示

你的描述有点模糊,但听起来你想要一个将Stretch设置为Uniform的ViewBox作为你控件的根元素。

太糟糕了,您无法为StackPanel,DockPanel,Grid或任何其他容器创建控件模板。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top