Wpf MessageBox根据文本字符串的大小调整bahavior的大小
您好,我正在尝试根据我在WPF中构建的自定义对话框中文本(而不是标题)字符串的大小来实现MessageBox的大小调整。这是我的自定义MessageBox,带有我应用程序的布局 但是MessageBox如何根据字符串的大小自动增加MessageBox的高度呢?怎么做Wpf MessageBox根据文本字符串的大小调整bahavior的大小,wpf,wpf-controls,messagebox,Wpf,Wpf Controls,Messagebox,您好,我正在尝试根据我在WPF中构建的自定义对话框中文本(而不是标题)字符串的大小来实现MessageBox的大小调整。这是我的自定义MessageBox,带有我应用程序的布局 但是MessageBox如何根据字符串的大小自动增加MessageBox的高度呢?怎么做 提前谢谢 在WPF中,您通常使用FormattedText类来微调文本 如果我做对了,你需要的是BuildGeometry方法: 因此,您需要: 创建格式化文本 从中构建几何体 提取边界框 将messagebox的大小调整为此大
提前谢谢 在WPF中,您通常使用FormattedText类来微调文本 如果我做对了,你需要的是BuildGeometry方法: 因此,您需要:
- 创建格式化文本
- 从中构建几何体
- 提取边界框
- 将messagebox的大小调整为此大小
- 我通常是这样做的:
<Window SizeToContent="WidthAndHeight" ResizeMode="NoResize" ...>
这是有用的窗口,这是我需要的窗口。但是我使用哪个控件来显示文本?我需要一个根据文本长度自动增长的控件。如果文本框能这样做,我不知道怎么做。如果我想让TexBox的宽度不增加,我只需要使用TextWrapping属性。但是如果我想让她长高呢?我不知道MessageBox中使用哪个控件来显示文本……您可以创建一个
页面作为窗口内容,其中包含流程文档
,然后可以使用各种块和内联线来显示文本。如果你想包装文本,你需要在容器上设置MaxWidth,否则它只会变宽(通常直到窗口与屏幕一样宽)。实际上,从一个简单的消息框来看,FlowDocumentScrollViewer
可能更合适,我添加了更多的示例代码。但是FlowDocumentScrollViewer能否增长到一定的限制(MaxHeight)与通常的MessageBox一样?如果需要,可以在任何框架元素上设置MaxHeight,包括FlowDocumentScrollViewer。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
SizeToContent="WidthAndHeight"
ResizeMode="NoResize" MaxWidth="400" MaxHeight="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.Children>
<FlowDocumentScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto">
<FlowDocument>
<Paragraph>
<Run Text="{Binding DisplayText}"/>
</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
<StackPanel Grid.Row="1">
<!-- Buttons -->
</StackPanel>
</Grid.Children>
</Grid>
</Window>