2011-04-16 80 views
1

嗨,我想实现MessageBox调整大小bahavior取决于我在WPF建立的自定义DialogBox中的文本(不是标题)字符串的大小。这是我的自定义MessageBox与我的应用程序的布局。MessageBox调整大小bahavior取决于文本字符串的大小

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

在此先感谢!

回答

3

这是我常这样做:

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

另外,你可以有一个ScrollViewer作为窗口的孩子,并设置窗口中的MaxHeight & 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> 
+0

也就是说有用的窗口,它就是我需要的窗口。但是,我用哪个控件来显示文本?我需要一个根据文本长度自动增长的控件。如果文本框这样做,我不知道如何。如果我想要的TexBox不增长宽度,我只需要使用属性TextWrapping。但是,如果我想让它在高度上成长呢?我不知道在MessageBox中使用哪个控件来显示文本... – Miguel 2011-04-16 16:01:05

+0

您可以使用“FlowDocument”创建一个“Page”作为窗口的内容,然后可以使用各种块内联显示文本。如果你想要文本换行**,你需要在容器上设置MaxWidth **,否则它只会增加宽度(通常直到窗口和屏幕一样宽)。 – 2011-04-16 17:05:28

+0

实际上'FlowDocumentScrollViewer'可能更适合于一个简单的消息框,我添加了一些更多示例代码。 – 2011-04-16 17:17:49