HOWTO使WPF TextBlock文本的一部分变为粗体,而无需嵌入另一个TextBlock并使用属性设置器

时间:2018-12-19 18:03:11

标签: c# wpf .net-3.5 textblock

我在TexBlock下面,我应该根据WPF组合框中选择的值动态更改其text属性。

<TextBlock Padding="5 10 0 0">
    <TextBlock.Style>
        <Style TargetType="{x:Type TextBlock}">
           <Setter Property="Text" Value="Select the items:" />
           <Style.Triggers>
               <DataTrigger Binding="{Binding ElementName=MyWPFCombo, Path=Id}" Value="10">
                   <Setter Property="Text" Value="Select the old items:" />
               </DataTrigger>                               
           </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

我的问题是我需要将文本“选择旧项目:”的部分设置为粗体,而将部分“旧项目”设置为粗体。在其他情况下,我知道可以通过在其中嵌入文本块来完成,在这种情况下,我需要使用设置器进行设置。怎么做?

1 个答案:

答案 0 :(得分:0)

这很奇怪,因为您需要部分文本块为粗体,而且我认为您不能折叠内联。

    <StackPanel>
        <TextBlock Padding="5 10 0 0">
            <Run Text="Select the"/>
            <Bold>
                <Run>
                  <Run.Style>
                    <Style TargetType="Run">
                      <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=MyWPFCombo, Path=SelectedValue}" Value="10">
                            <Setter Property="Text" Value="old items:" />
                        </DataTrigger>
                    </Style.Triggers>                          
                    </Style>
                </Run.Style>
                </Run>
            </Bold>
            <Run>
               <Run.Style>
                    <Style TargetType="Run">
                        <Setter Property="Text" Value="items:" />
                      <Style.Triggers>
                        <DataTrigger Binding="{Binding ElementName=MyWPFCombo, Path=SelectedValue}" Value="10">
                            <Setter Property="Text" Value="" />
                        </DataTrigger>
                    </Style.Triggers>                          
                    </Style>
                </Run.Style>                 

            </Run>
        </TextBlock>
        <ComboBox x:Name="MyWPFCombo" 
                  SelectedValuePath="Id"
                  DisplayMemberPath="Description"
                  ItemsSource="{Binding Items}"/>
    </StackPanel>