【问题标题】:Changing the width of Window when using pages in WPF在 WPF 中使用页面时更改窗口的宽度
【发布时间】:2010-12-09 23:01:40
【问题描述】:

我正在使用我当前正在处理的 WPF 项目中的页面。但是,我似乎无法弄清楚如何更改页面的宽度,或者更确切地说,是托管页面的窗口的宽度?

设置页面宽度属性只会改变窗口框架内页面的宽度。

通过设置主窗口或导航窗口的with:

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

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

也不行。那么如何在 XAML 中设置窗口的宽度呢?

【问题讨论】:

    标签: wpf width mainwindow


    【解决方案1】:

    如果您只是询问如何设置 Window 本身的尺寸,那么只需打开 Window 的 XAML 文件并设置 Width/Height 属性:

    Window Width="640" Height="480"
    

    如果你真的想要一个差异。每页的窗口大小,您需要做更多的工作。页面的可用空间由主机窗口控制。页面没有内在的方式向主机请求更多的不动产,但是您可以通过创建一些附加的属性来为您的 iwn 应用程序构建支持,这些属性您的主机窗口知道并且可以由页面作者应用。当页面加载时,您的主机可以检查是否设置了这些属性并相应地调整自己的宽度。

    【讨论】:

    • 感谢您的回答,但我认为您误解了我的问题:我只想在编译时设置一次主机窗口的宽度,仅此而已。所以我想要控制的不是页面宽度,而是窗口框架宽度,如果这有意义的话。
    【解决方案2】:

    确实很痛苦:您需要一个可以导航到页面的 NavigationWindow。由于它继承自 Window,因此您可以在此容器上设置高度和宽度。
    -打开一个新的 wpf 应用程序
    - 删除你得到的标准窗口1。

    因此更改 App.xaml(删除 StartupUri 属性):

    <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:

        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>
    

    祝你好运!

    【讨论】:

    • 谢谢,这正是我需要的!这样也可以设置其他的东西,比如 ReSizeMode 等。
    猜你喜欢
    • 2015-11-30
    • 2012-06-29
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    相关资源
    最近更新 更多