2011-11-07 121 views
1

我有一個scenerio,我想要動態呈現自定義窗體對象。此表單與WinForms表單類似。它將顯示多個按鈕欄中的一個,按鈕只能在我們的實現中的按鈕欄中生存,並且用戶將用於數據輸入的許多編輯控件。讓WPF窗口根據DockPanel中的剩餘區域自動調整大小

在渲染表單時,我們在配置文件中將行高和列寬都作爲應用程序區域的百分比。所有表格都有相同的行高和列寬。這些值的實際設備單位值是在應用程序初始化時計算的。

我的問題是調整窗體大小。例如,我有一個表格,應該是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

你可以試着將控制填滿剩餘DockPanel空間,然後綁定到該控件的ActualHeightActualWidth性能

<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}" /> 

+0

好吧,我覺得我們是在正確的路線,但這似乎並沒有給我所需要的東西。我會更新我的問題。 – WPFNewbie

+0

請看問題更新。 – WPFNewbie

+0

@WPFNewbie嘗試在''標記中設置'SizeToContent ='WidthAndHeight''標記 – Rachel

相關問題