在样式中使用转换器是否可行?

20

在样式内部使用转换器是否可行?例如,我正在尝试创建一个经过样式设置的TextBlock,其文本根据TextBlockActualHeight属性进行调整大小。这种调整大小将通过一个转换器完成。

2个回答

41

是的,这是可能的。例如:

<Style TargetType="TextBlock">
    <Setter Property="FontSize">
        <Setter.Value>
            <Binding Path="ActualHeight" RelativeSource="{RelativeSource Self}">
                <Binding.Converter>
                    <MyConverter/>
                </Binding.Converter>
            </Binding>
        </Setter.Value>
    </Setter>
</Style>

根据您的具体情况,您可能还可以使用更简洁的方式:

<Style TargetType="TextBlock">
    <Setter Property="FontSize" Value="{Binding ActualHeight, RelativeSource={RelativeSource Self}, Converter={StaticResource MyConverter}}"/>
</Style>

3

我成功地使用以下方法实现了类似的功能:

<Setter Property="Text">
  <Setter.Value>
    <Binding Path="CompanyName">
      <Binding.Converter>
        <conv:UppercaseConverter/>
      </Binding.Converter>
    </Binding>
  </Setter.Value>
</Setter>

希望这对你也有效。

Yann

附言 - CompanyName 是我绑定到文本块的实际 ViewModel 属性的名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接