2009-10-25 88 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