代码之家  ›  专栏  ›  技术社区  ›  Dominic Jonas

绑定到xaml中另一个控件样式定义的默认属性值

  •  0
  • Dominic Jonas  · 技术社区  · 6 年前

    我有一个 CustomControl 希望默认值为 TextBox 默认样式定义。我不知道这是否可能。

    这就是我迄今为止所做的没有成功的尝试。但在这里你可以看到我的想法。

    我的默认实现更改 文本框 (例如,在app.xaml中应用它全局)

    <Style TargetType="TextBox">
        <Setter Property="BorderThickness" Value="2"/>
    </Style>
    

    这里我想得到“2”的值。

    <Style TargetType="controls:CustomControl">
        <Setter Property="BorderThickness" Value="{Binding Source={x:Static TextBox.BorderThicknessProperty}}"/>
    </Style>
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   mm8    6 年前

    的默认值 BorderThickness 财产 TextBox 文本框 它最终应用于 文本框 在运行时。

    所以你不能这样做:

    <Style TargetType="controls:CustomControl">
        <Setter Property="BorderThickness" Value="{Binding Source={x:Static TextBox.BorderThicknessProperty}}"/>
    </Style>
    

    …除非您绑定到 文本框 使用默认样式的。

    您可以查看 文本框 简单地复制它的默认值 边界厚度 财产价值 1 不过:

    <Style TargetType="controls:CustomControl">
        <Setter Property="BorderThickness" Value="1"/>
    </Style>
    

    显然,您还可以从多个 Style ,例如:

    <Style TargetType="controls:CustomControl">
        <Setter Property="BorderThickness" Value="{Binding Thickness, Source={StaticResource settings}}"/>
    </Style>