Изменение ширины окна при использовании страниц в WPF

Я использую страницы в проекте WPF, над которым я сейчас работаю. Однако я не могу понять, как изменить ширину страницы или, скорее, ширину окна, в котором размещены страницы?

Установка свойства ширины страницы изменяет только ширину страницы внутри рамки окна.

Настройка с помощью основного окна или окна навигации через:

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

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

Тоже не работает. Итак, как мне установить ширину окна в XAML?


person Kaare Mai    schedule 25.10.2009    source источник


Ответы (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>

Удачи!

person Dabblernl    schedule 25.10.2009
comment
Спасибо, это именно то, что мне нужно! Таким образом, также можно установить другие вещи, такие как ReSizeMode и т. д. - person Kaare Mai; 26.10.2009

Если вы просто спрашиваете, как установить размеры самого окна, просто откройте файл XAML окна и установите свойства ширины/высоты:

Window Width="640" Height="480"

Если вы действительно хотите диф. Размер окна на страницу, вам нужно сделать еще немного работы. Доступная недвижимость для Страницы контролируется хост-окном. У Страницы нет встроенного способа запросить дополнительную недвижимость у хоста, но вы можете встроить поддержку в свое приложение iwn, создав некоторые присоединенные свойства, о которых знает ваше хост-окно и может применить автор Страницы. Когда страница загружается, ваш хост может проверить, установлены ли эти свойства, и соответствующим образом настроить свою ширину.

person Drew Marsh    schedule 25.10.2009
comment
Спасибо за ответ, но я думаю, что вы неправильно понимаете мою проблему: я просто хочу установить ширину окна хоста один раз во время компиляции, ничего больше. Так что я хочу контролировать не столько ширину страницы, сколько ширину оконной рамы, если это имеет смысл. - person Kaare Mai; 25.10.2009