代码之家  ›  专栏  ›  技术社区  ›  Inferis

调整XAML属性的大小

  •  2
  • Inferis  · 技术社区  · 16 年前

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

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

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

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

    3 回复  |  直到 16 年前
        1
  •  1
  •   Enrico Campidoglio    16 年前

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

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

    请注意,绑定源是 框架元素.实际宽度 框架元素.实际高度 模板化控件的属性。这些属性包含控件呈现后的宽度和高度,这可能与在 宽度 高度 性质。这是因为值最终是在运行时计算的,同时考虑到可视化树中任何父控件的大小。

        2
  •  4
  •   Amanda Mitchell    16 年前

    您的描述有点含糊,但听起来您希望将拉伸设置为uniform的viewbox作为控件的根元素。

        3
  •  0
  •   fdsfdsa    16 年前

    太糟糕了,无法为stackpanel、dockpanel、grid或任何其他容器创建控件模板。