C# WPF-包装中的截止问题
当我在“包裹”面板中使用多个控件时,如果任何控件包含长文本(大于窗口大小),则会发生截断。(见图) 我有两个文本块和一个按钮控件C# WPF-包装中的截止问题,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,当我在“包裹”面板中使用多个控件时,如果任何控件包含长文本(大于窗口大小),则会发生截断。(见图) 我有两个文本块和一个按钮控件 <Grid> <WrapPanel> <TextBlock Text="Very long Text Message contains long text for testing " FontWeight="Bold"></TextBlock> <
<Grid>
<WrapPanel>
<TextBlock Text="Very long Text Message contains long text for testing " FontWeight="Bold"></TextBlock>
<Button Content="sample Text"></Button>
<TextBlock Text="sample Text textblock"></TextBlock>
</WrapPanel>
</Grid>
第一个文本块将被截断。如果文本包含更多字符,我希望换行到下一行
帮我解决这个问题。提前感谢。您需要文本框中的属性
TextWrapping=“Wrap”
<TextBlock
Text="Very long Text Message contains long text for testing "
FontWeight="Bold"
TextWrapping="Wrap">
</TextBlock>
你是想把一个段落包装起来吗?如果是这样,那么
WrapPanel
实际上并不是您想要的
WrapPanel
获取UI元素(不动产的矩形块)并将它们从左到右、从上到下排列。您可以在第一个TextBlock
中启用换行,但这样会占用两行高的矩形屏幕空间。因为TextBlock
填充了整个矩形,所以按钮实际上会出现在它的下方,而不是粗体字“for testing”的右侧
如果你想让整个事情像一个段落一样流动,你不想使用UI元素(它们总是矩形块);您希望使用文本元素(在段落中流动)
将文本元素放入XAML的方法是将它们包装在TextBlock
中。试试这个:
<Grid>
<TextBlock TextWrapping="Wrap">
<Bold>
<Run Text="Very long Text Message contains long text for testing " />
</Bold>
<Button Content="sample Text"></Button>
sample Text textblock
</TextBlock>
</Grid>
示例文本文本块
请注意,我将第一个文本块包装在
元素中,否则后面的空格将被忽略(假定为XAML文档中的空白)。第二段文本没有前导空格或尾随空格,所以我直接将其内联
对XAML的“控件”和“文本”方面的差异有更多的了解。
当按钮包含长文本时,发生断点。如果您希望所有的内容都以段落的形式流动,则应该真正考虑使用A而不是<代码>按钮< /代码>。超链接是文本元素,将像文本一样换行;按钮(作为UI元素,因此是不动产的矩形块)将无法优雅地包装。如果你真的想要一个按钮,试着将文本
更改为文本
,看看你是否喜欢结果,但这将是你用按钮
能做的最好的了。谢谢@joe。但问题是我必须在ItemsControl中添加超链接。当我尝试添加它时,会显示错误,如**无法将类型为“Hyperlink”的值添加到类型为“UIElementCollection”的集合或词典中***items控件来自WPF的“UI元素”端,并且希望包含UI元素<代码>超链接
来自WPF的“文本元素”端。要在ItemsControl
中使用文本元素,需要将它们包装在TextBlock
中(这是一个UI元素,但知道如何包含文本元素——它是WPF的UI元素和文本元素之间的适配器)。我答案底部的链接有更多的细节。当按钮包含长文本时,会发生中断。