我有一个场景,我想动态渲染一个自定义表单对象。此表单类似于 WinForms 表单。它将显示多个按钮栏之一,按钮只能存在于我们的实现中的按钮栏中,以及用户将用于数据输入的众多编辑控件。
在渲染表单时,我们在配置文件中有行高和列宽,两者都是应用程序区域的百分比。所有表单共享一个共同的行高和列宽。这些的实际设备单元值是在应用程序初始化时计算的。
我的问题是调整表格的大小。例如,我有一个应该是 15 行乘 80 列的表单,假设这转换为 500 单位高和 800 单位宽。这将是表单区域,不包括按钮栏。现在我正在计算 FormPreviewManager 中的窗口高度和宽度。但是,这很麻烦,因为我必须给出总单位,包括按钮栏的大小和窗口边框,它们可能会改变,因为它们可以选择在浮动窗体窗口中包含或不包含标题栏。
在表单的呈现中,我使用 DockPanel 来呈现按钮栏并将剩余空间作为我的行和列网格。我尝试创建按钮栏,将剩余空间设置为我的 FormGrid 对象,然后专门设置 FormGrid 的宽度和高度,但它不会改变包含窗口的大小。
如何使浮动窗口自动调整大小?我希望能够绘制按钮栏,然后说剩余空间是 500 单位高和 800 单位宽,然后窗口调整到它需要保存这些数据的任何大小,不多也不少。
对此的任何帮助或可能的其他方法都会很棒。
更新
基本上,如果这是我对窗口的整个 XAML 定义,我希望能够设置 UnusedContent 的宽度和高度,并相应地调整窗口大小。
<Grid>
<DockPanel>
<StackPanel DockPanel.Dock="Top" Height="50" />
<StackPanel DockPanel.Dock="Left" Width="50" />
<ContentControl x:Name="UnusedContent" />
</DockPanel>
</Grid>
如果我将 UnusedContent 设置为 200 x 200,它将创建一个内部尺寸为 250 x 250、内容区域加上两个堆栈面板的窗口。