【问题标题】:Multiple Run elements in WPF Style setterWPF Style setter 中的多个 Run 元素
【发布时间】:2015-01-28 12:28:46
【问题描述】:

XAML 中是否可以在 Style 设置器中定义多个 Run

以下定义了两个Run,但失败了:

属性“值”设置了多次。

<TextBlock>
    <TextBlock.Style>
         <Style TargetType="{x:Type TextBlock}">
              <Setter Property="Text">
                   <Setter.Value>
                       <Run Text="{Binding SelectedItem.iso}"/>
                       <Run Text="{Binding SelectedItem.value}"/>
                  </Setter.Value>
              </Setter>
             <Style.Triggers>
                 <DataTrigger Binding="{Binding SelectedItem.type}" Value={x:Null}">
                      <Setter Property="Text" Value="No value" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

可以在保留多个Run 的使用的同时解决此问题吗?

【问题讨论】:

  • 即使样式设置器接受多个值,这也不起作用。多次运行未设置为 TextBlock 的 Text 属性,而是设置为其 Inlines 属性。但是,Inlines 不是依赖属性,因此不能由样式设置器设置。
  • 看看这个:stackoverflow.com/questions/11197474/textblock-style-triggers 它有两个可供您选择的选项。

标签: wpf styles textblock


【解决方案1】:

Setter 作用于一个属性,所以它只能有一个值,你得到的错误是合乎逻辑的:它无法理解你正在尝试做什么,它可以只是......将一个属性设置为给定值。

所以想法是给它应该的值:附加文本。为此,您将使用MultiBinding,它接受多个值并将它们作为一个返回,具体取决于您给它的StringFormat

<Setter.Value>
    <MultiBinding StringFormat="{}{0}{1}{2}"><!-- Format as you wish -->
        <Binding Path="SelectedItem.iso"/>
        <Binding Source="{x:Static System:Environment.NewLine}"/>
        <Binding Path="SelectedItem.value"/>
    </MultiBinding>
</Setter.Value>

关于 StringFormat 的注意事项:您必须在开始时使用 {} 来转义大括号,否则它会将它们视为标记扩展启动器。

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 2017-02-28
    • 2011-10-01
    • 2014-09-02
    • 1970-01-01
    • 2013-01-29
    相关资源
    最近更新 更多