我有一个想要动态渲染自定义表单对象的场景。此表单类似于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乘200,它将创建一个内部尺寸为250乘250的窗口,内容区域加上两个堆栈面板。
答案 0 :(得分:0)
您可以尝试放置一个控件来填充剩余的DockPanel
空格,然后绑定到该控件的ActualHeight
和ActualWidth
属性
<DockPanel>
<StackPanel DockPanel.Dock="Top" Height="50" />
<StackPanel DockPanel.Dock="Left" Width="100" />
<ContentControl x:Name="Spacer" />
</DockPanel>
<Grid Height="{Binding ElementName=Spacer, Path=ActualHeight}"
Width="{Binding ElementName=Spacer, Path=ActualWidth}" />