SizeToContent 使用 RichTextBox 和 FlowDocumentScrollViewer 填充屏幕

发布于 2024-11-14 18:51:15 字数 1892 浏览 3 评论 0原文

我正在尝试以 WPF 表单显示 FlowDocument,并尝试了 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>

I'm trying to show a FlowDocument in a WPF form and have tried both RichTextBox and FlowDocumentScrollViewer. I also require that the window resizes to be able to show all text.
Unfortunately, when I set SizeToContent="WidthAndHeight" for the Window itself, no matter what content I put in the FlowDocument, the window expands to the full width of all my displays! The height seems to resize fine, however.

Anyone know how to get it to resize properly? Looked all over and cannot figure out how to get this going...
XAML below:

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

雪落纷纷 2024-11-21 18:51:15

SizeToContent 仅在内容实际有界的情况下“起作用”,但是在这种情况下,作为 Window 内容的网格没有大小限制,因此它将尝试获取窗口会响应它所能获得的所有空间,为其提供适合屏幕的空间。

如果您想防止这种情况发生,您需要使文档容器的大小适合其内容,如果文档本身没有任何边界并且也以“给我所有您拥有的方式”运行,则这可能是不可能的。

SizeToContent only "works" if the content is actually bounded, in this case however the Grid, which is the content of Window, has no size restrictions so it will try to get all the space it can get, the window responds by giving it as much space as fits the screen.

If you want to prevent this you would need to make the container for your document to size to their content which might be impossible if the document does not have any bounds itself and also behaves in a give-me-all-you-have manner.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文