嗨,我想实现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