TextBlock 中 Label 的垂直对齐错误
Vertical alignment of Label inside TextBlock is wrong
在我向用户显示的 WPF 弹出窗口 window 中,我想将绑定到变量的文本放入文本块中。
我试图通过将 <Label>
放在 <TextBlock>
中来做到这一点。
但是,这会导致对齐问题,请参见下面的标记和图片。
我想知道如何让Label
中的文字与TextBlock
中的文字垂直对齐,或者是否有更好的解决方案?
我可以将整个文本放在一个变量中,但我不知道如何为部分文本设置 <Bold>
格式。
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap"
VerticalAlignment="Top" Height="99" Width="339" Grid.RowSpan="3">
The user is <Bold>responsible</Bold> for
<Bold><Label Content="00" Padding="0"/></Bold> vehicles
</TextBlock>
您可以将 Run
内联元素用于数据绑定文本。
Starting in the .NET Framework 4, the Text property of the Run object is a dependency property, which means that you can bind the Text property to a data source.
它还有设置文本样式的属性,例如 FontWeight
,这里不需要 <Bold>
。
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap"
VerticalAlignment="Top" Height="99" Width="339" Grid.RowSpan="3">
The user is <Bold>responsible</Bold> for
<Run Text="{Binding YourProperty}" FontWeight="Bold"/> vehicles
</TextBlock>
结果如下所示:
关于这个问题的一般说明:TextBlock
中的元素应该是 inline elements. Here is an article that has links to other inline elements that could be useful to you, like span
,允许对其他内联元素进行分组并应用样式。
WPF 有两种基本类型,UIElement
和 ContentElement
。 TextBlock
和 Label
是 UIElement
,而 TextBlock
的内容是内联,即 ContentElements
。这就是对齐关闭的原因,它们的用途非常不同。您可以在此处阅读更多关于差异和概念的信息:
- Base Element APIs in WPF Classes
- UIElement
UIElement
is a base class for WPF core level implementations building on Windows Presentation Foundation (WPF) elements and basic presentation characteristics.
- ContentElement
Provides a WPF core-level base class for content elements. Content elements are designed for flow-style presentation, using an intuitive markup-oriented layout model and a deliberately simple object model.
- Flow Document Overview
在我向用户显示的 WPF 弹出窗口 window 中,我想将绑定到变量的文本放入文本块中。
我试图通过将 <Label>
放在 <TextBlock>
中来做到这一点。
但是,这会导致对齐问题,请参见下面的标记和图片。
我想知道如何让Label
中的文字与TextBlock
中的文字垂直对齐,或者是否有更好的解决方案?
我可以将整个文本放在一个变量中,但我不知道如何为部分文本设置 <Bold>
格式。
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap"
VerticalAlignment="Top" Height="99" Width="339" Grid.RowSpan="3">
The user is <Bold>responsible</Bold> for
<Bold><Label Content="00" Padding="0"/></Bold> vehicles
</TextBlock>
您可以将 Run
内联元素用于数据绑定文本。
Starting in the .NET Framework 4, the Text property of the Run object is a dependency property, which means that you can bind the Text property to a data source.
它还有设置文本样式的属性,例如 FontWeight
,这里不需要 <Bold>
。
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap"
VerticalAlignment="Top" Height="99" Width="339" Grid.RowSpan="3">
The user is <Bold>responsible</Bold> for
<Run Text="{Binding YourProperty}" FontWeight="Bold"/> vehicles
</TextBlock>
结果如下所示:
关于这个问题的一般说明:TextBlock
中的元素应该是 inline elements. Here is an article that has links to other inline elements that could be useful to you, like span
,允许对其他内联元素进行分组并应用样式。
WPF 有两种基本类型,UIElement
和 ContentElement
。 TextBlock
和 Label
是 UIElement
,而 TextBlock
的内容是内联,即 ContentElements
。这就是对齐关闭的原因,它们的用途非常不同。您可以在此处阅读更多关于差异和概念的信息:
- Base Element APIs in WPF Classes
- UIElement
UIElement
is a base class for WPF core level implementations building on Windows Presentation Foundation (WPF) elements and basic presentation characteristics. - ContentElement
Provides a WPF core-level base class for content elements. Content elements are designed for flow-style presentation, using an intuitive markup-oriented layout model and a deliberately simple object model.
- Flow Document Overview