SizeToContent заполняет экран с помощью RichTextBox и FlowDocumentScrollViewer - PullRequest
1 голос
/ 10 июня 2011

Я пытаюсь показать FlowDocument в форме WPF и пробовал оба RichTextBox и FlowDocumentScrollViewer. Я также требую, чтобы окно изменяло размеры, чтобы можно было показать весь текст. К сожалению, когда я устанавливаю 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 Ответ

1 голос
/ 12 июня 2011

SizeToContent «работает» только в том случае, если содержимое действительно ограничено, однако в этом случае Grid, который является содержимым Window, не имеет ограничений по размеру, поэтому он попытается получить все пространство, которое может получить,окно отвечает, давая ему столько места, сколько помещается на экране.

Если вы хотите предотвратить это, вам нужно будет настроить контейнер для вашего документа в соответствии с его содержимым, что может быть невозможно, если документ этого не делает.имеет какие-либо границы, а также ведет себя по принципу «дай мне все, что у тебя есть».

...