2011-04-16 62 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