MessageBox根据文本字符串的大小调整行为大小

时间:2011-04-16 00:10:41

标签: wpf wpf-controls messagebox

您好我正在尝试实现MessageBox调整大小行为,具体取决于我在WPF中构建的自定义DialogBox中的Text(不是标题)字符串的大小。这是我的自定义MessageBox,其中包含我的应用程序的布局。

但MessageBox如何依赖于字符串的大小,MessageBox的高度会自动增长?怎么做?

提前致谢!

2 个答案:

答案 0 :(得分:3)

这就是我通常这样做的方式:

<Window SizeToContent="WidthAndHeight" ResizeMode="NoResize" ...>

此外,您可以将ScrollViewer作为窗口的子项并设置MaxHeight&amp;窗口上的MaxWidth属性可以进一步限制它。

编辑:举例说明窗口的外观:

<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>

答案 1 :(得分:0)

在WPF中,您通常使用FormattedText类来微调文本。

如果我做对了你需要的是BuildGeometry方法:

http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.buildgeometry.aspx

所以你需要:

  • 创建格式化文本
  • 从中构建几何
  • 提取边界框
  • 将邮箱大小调整为此框大小