嗨,我想實現MessageBox調整大小bahavior取決於我在WPF建立的自定義DialogBox中的文本(不是標題)字符串的大小。這是我的自定義MessageBox與我的應用程序的佈局。MessageBox調整大小bahavior取決於文本字符串的大小
但MessageBox如何取決於字符串的大小,MessageBox的高度自動增長?怎麼做?
在此先感謝!
嗨,我想實現MessageBox調整大小bahavior取決於我在WPF建立的自定義DialogBox中的文本(不是標題)字符串的大小。這是我的自定義MessageBox與我的應用程序的佈局。MessageBox調整大小bahavior取決於文本字符串的大小
但MessageBox如何取決於字符串的大小,MessageBox的高度自動增長?怎麼做?
在此先感謝!
這是我常這樣做:
<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>
在WPF中,您通常使用FormattedText類來微調文本。
你需要的正是,如果我這樣做是正確的是BuildGeometry方法:
http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.buildgeometry.aspx
因此,你需要:
也就是說有用的窗口,它就是我需要的窗口。但是,我用哪個控件來顯示文本?我需要一個根據文本長度自動增長的控件。如果文本框這樣做,我不知道如何。如果我想要的TexBox不增長寬度,我只需要使用屬性TextWrapping。但是,如果我想讓它在高度上成長呢?我不知道在MessageBox中使用哪個控件來顯示文本... – Miguel 2011-04-16 16:01:05
您可以使用「FlowDocument」創建一個「Page」作爲窗口的內容,然後可以使用各種塊內聯顯示文本。如果你想要文本換行**,你需要在容器上設置MaxWidth **,否則它只會增加寬度(通常直到窗口和屏幕一樣寬)。 – 2011-04-16 17:05:28
實際上'FlowDocumentScrollViewer'可能更適合於一個簡單的消息框,我添加了一些更多示例代碼。 – 2011-04-16 17:17:49