0

基本上我想做的是必须FontSize是可选的,这意味着应该有一个默认值。请协助。

<ControlTemplate x:Key="MyTemplate" TargetType="{x:Type Control}">
    <TextBlock 
           HorizontalAlignment="Left"
           VerticalAlignment="Center"
           MaxWidth="136"
           MaxHeight="55"
           FontSize="{TemplateBinding FontSize}"
           TextWrapping="Wrap"
           />
</ControlTemplate>
4

1 回答 1

1

有 FontSize 是可选的,这意味着应该有一个默认值

这似乎是对 TemplateBinding 是什么的误解。TemplateBinding 是在控件模板中使用的一种特殊类型的绑定,其中源是模板所针对的控件中的依赖属性。现在,依赖属性可以有默认值——但这是在定义中设置的:

public static readonly DependencyProperty SomethingProperty = DependencyProperty.Register(
    "Something", 
    typeof(double), 
    typeof(SomethingControl), 
    new FrameworkPropertyMetadata(1.0));

                                   ^ default value

在 OP 的情况下,Control该类拥有FontSizeDP,因此您不能以这种方式设置其默认值。所以问题变成了,你想做什么?几个选项:

  1. 而不是使用ControlTemplate,使用 a Style,并将 设置FontSize为您想要的默认值。(您也可以让样式应用您的 ControlTemplate。)
  2. 创建您自己的派生控件,具有自己的“FontSize”依赖属性,并按上述应用所需的默认值。
  3. 在应用程序的根控件上设置FontSize——这将有效地设置整个应用程序的默认字体大小。

在不了解更多上下文的情况下,很难说哪种方法适合您的具体情况。

于 2013-10-31T18:32:51.500 回答