2009-10-25 84 views
3

Im使用當前正在處理的WPF項目中的頁面。然而,我似乎無法弄清楚如何改變一個頁面的寬度,或者更確切地說,承載頁面的窗口的寬度?在WPF中使用頁面時更改窗口的寬度

設置頁面寬度屬性只會改變窗口框架內頁面的寬度。

與主窗口的設置或navigationwindow通過:

<Application.MainWindow> 
    <Window Width="400" /> 
</Application.MainWindow> 

<Application.MainWindow> 
    <NavigationWindow Width="400" /> 
</Application.MainWindow> 

不工作要麼。那麼我如何在XAML中設置窗口的寬度?

回答

2

確實很痛苦:您需要一個可導航到頁面的導航窗口。由於這是從Window繼承的,因此您可以在此容器上設置Height和Width。
- 打開一個新的WPF應用程序
- 刪除您獲得的標準窗口1。因此

<Application x:Class="WpfApplication1.App" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Startup="Application_Startup"> 
<Application.Resources> 

</Application.Resources> 
</Application> 

寫App.xaml.cs:

更改的App.xaml這樣(刪除的StartupUri屬性)

public partial class App : Application 
{ 
    private NavigationWindow navigationWindow; 

    private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     navigationWindow = new NavigationWindow(); 
     navigationWindow.Height = 200; 
     navigationWindow.Width = 100; 
     var page = new Page1(); 
     navigationWindow.Navigate(page); 
     navigationWindow.Show(); 
    } 

您可以從項目菜單中添加一個頁面。這會給你類似的東西:

<Page x:Class="WpfApplication1.Page1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Page1"> 
<Grid> 
    <TextBlock>test</TextBlock> 
</Grid> 
</Page> 

祝你好運!

+0

謝謝,那正是我需要的!這樣也可以設置其他的東西像ReSizeMode等 – 2009-10-26 20:19:30

0

如果你只是問如何設置窗口本身的尺寸,那麼只需打開窗口的XAML文件,並設置寬度/高度屬性:

Window Width="640" Height="480" 

如果你真的想要一個差異。每頁的窗口大小,你需要做更多的工作。主頁窗口控制頁面的可用不動產。頁面沒有固有的方式讓主機請求更多的房地產,但是您可以通過創建一些您的主機窗口知道的並可以由頁面作者應用的附加屬性來爲您的iwn應用程序構建支持。當頁面加載時,主機可以檢查是否設置了這些屬性並相應地調整其自身的寬度。

+0

感謝您的回答,但我想你誤解我的問題: 我只想在編譯時設置一次主窗口的寬度,沒有別的。所以它不是我想要控制的頁面寬度,而是窗口框架寬度,如果這是有意義的。 – 2009-10-25 20:22:27