3

有没有办法让 XAML 属性随着它们所属的 uielements 的大小一起缩放?

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

当我在模板上应用 ScaleTransform 时它工作得很好,但是这会导致控件在实际使用时太小:width/height=Auto 将控件调整为适当的大小,然后应用 scaletransform。所以我很喜欢一种不可扩展的控制。

我对 WPF 有点陌生,所以可能有一种简单的方法可以做到这一点......

4

3 回答 3

4

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

于 2008-10-15T00:02:34.747 回答
1

您可以尝试在运行时将模板内控件的宽度和高度分别绑定到模板化控件的宽度和高度。就像是:

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

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

于 2008-10-14T12:15:52.740 回答
0

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

于 2008-11-18T21:49:37.290 回答