更改附加到WPF中绑定的字符串的字体

时间:2013-10-14 15:14:27

标签: c# .net wpf xaml

这是XAML

    <ListView x:Name="duplicateVarsInDepXMLListView" ItemsSource="{Binding}" HorizontalAlignment="Left" Height="100" Margin="362,360,0,0" VerticalAlignment="Top" Width="306">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Name, StringFormat='Variable Name: {0}'}"/>                       
                    <TextBlock Text="{Binding Value,StringFormat='Value: {0}'}"/>                                               
                </StackPanel>                                           
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

此xaml显示带有变量名称的集合列表和集合的值。我们有类似Foreground属性的东西来改变绑定字符或FontWeight的颜色以使其变粗。 但是我只想更改标签的字体,例如VariableName而不是实际绑定。 这有可能实现吗?任何建议

3 个答案:

答案 0 :(得分:3)

您可以在Run中使用TextBlock元素,并对不同的运行应用不同的格式。您可以绑定到Run的{​​{3}}属性以动态设置字体:

<TextBlock>
  <Run Text="Variable Name: " FontFamily="{Binding FontName}"/>
  <Run Text="{Binding Name}"/>
</TextBlock>

如果使用TextBlock包裹TextWrapping="Wrap"中的文本,则运行将按预期进行回绕。这不适用于该问题,但可以使Run元素优于TextBlock中的StackPanel元素堆叠。

答案 1 :(得分:2)

提取单独的TextBlock并在该TextBlock上设置FontFamily。将所有TextBlock包装在StackPanel中并将orientation设置为Horizontal -

<StackPanel>
   <StackPanel Orientation="Horizontal">
       <TextBlock Text="Variable Name: " FontFamily="Comic Sans MS"/>
       <TextBlock Text="{Binding Name}"/>
   </StackPanel>
   <TextBlock Text="{Binding Value,StringFormat='Value: {0}'}"/>
</StackPanel>

答案 2 :(得分:1)

您可以执行以下操作:

<StackPanel Orientation=Horizontal>
  <TextBlock Text="Variable Name: "/>
  <TextBlock Text={Binding Name} FontWeight="Bold"/>
</StackPanel>