SizeToContent使用RichTextBox和FlowDocumentScrollViewer填充屏幕

时间:2011-06-10 14:47:24

标签: c# wpf xaml flowdocument

我正在尝试以WPF格式显示FlowDocument并尝试过RichTextBox和FlowDocumentScrollViewer。我还要求窗口调整大小以显示所有文本。 不幸的是,当我为Window本身设置SizeToContent =“WidthAndHeight”时,无论我在FlowDocument中放入什么内容,窗口都会扩展到我所有显示的全宽!然而,高度似乎调整得很好。

任何人都知道如何正确调整大小?看了一遍,无法弄清楚如何实现这一目标...... XAML如下:

<Window x:Class="CustomControls.SecureConfirmationDialog"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SecureConfirmationDialog" 
        MinHeight="120" MinWidth="200" 

        Height="120" Width="300" 
        ResizeMode="NoResize" 
        SizeToContent="WidthAndHeight"
        WindowStyle="ToolWindow"
        Loaded="Window_Loaded">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <FlowDocumentScrollViewer Name="flowMsg" Grid.Row="0" Grid.ColumnSpan="3" Margin="3" IsToolBarVisible="False" ScrollViewer.VerticalScrollBarVisibility="Hidden" />
        <TextBox Name="txtConfirm" Grid.Row="1" Grid.Column="0" Text="Testing" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="3" />
        <Button Name="btnOK" Grid.Row="1" Grid.Column="1" Content="OK" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="3" Width="50" Click="btnOK_Click"  />
        <Button Name="btnCancel" Grid.Row="1" Grid.Column="2" Content="Cancel" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="3" Width="50" Click="btnCancel_Click" />
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:1)

如果内容实际受限,

SizeToContent仅“有效”,在这种情况下,网格(Window的内容)没有大小限制,因此它会尝试获取所有空间它可以得到,窗口通过给它提供适合屏幕的空间来响应。

如果你想要防止这种情况,你需要使文档的容器大小适合他们的内容,如果文档本身没有任何边界,并且行为在给你我所有人的行为,这可能是不可能的。有风度。