Изменение размера окна wpf программно в c # - PullRequest
7 голосов
/ 18 августа 2011

У меня есть окно wpf с двумя пользовательскими элементами управления, внутри которых второе отображается только при необходимости. Я только устанавливаю MinWidth окна в XAML, MinHeight предоставляется посредством привязки данных и устанавливается в зависимости от того, отображается ли второй пользовательский контроль. Теперь: Как я могу установить размер окна в значения, отличные от MinWidth / Height во время выполнения. Я пытался установить значения до Show (), после Show (), в различных событиях (Initialized, Loaded и т. Д.). Я пытался с и без UpdateLayout (), я пытался установить высоту / ширину с помощью привязки данных. Ничего не работает! Но когда я отлаживаю подходы, я вижу, что свойства высоты / ширины окна установлены в ожидаемые значения, но ActualHeight / Width остаются. Я думал, что это будет вещица, но оказалось, что это не (для меня). Твои за любую помощь.

Ответы [ 3 ]

9 голосов
/ 18 августа 2011

Вы пытались установить

Application.Current.MainWindow.Height = 100;

Краткое добавление: я только что провел короткий тест, в коде:

public partial class MainWindow : Window, INotifyPropertyChanged
{
    private int _height;
    public int CustomHeight
    {
        get { return _height; }
        set
        {
            if (value != _height)
            {
                _height = value;
                if (PropertyChanged != null)
                    PropertyChanged(this, new PropertyChangedEventArgs("CustomHeight"));
            }
        }
    }

    public MainWindow()
    {
        InitializeComponent();
        this.DataContext = this;
        CustomHeight = 500;
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        CustomHeight = 100;
    }
}

и XAML:

<Window x:Class="WindowSizeTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="{Binding CustomHeight, Mode=TwoWay}" Width="525">
    <Grid>
        <Button Click="Button_Click">Test</Button>       
    </Grid>
</Window>

Нажатие на кнопку устанавливает высоту окна.Это то, что вы ищете?

3 голосов
/ 16 марта 2016

Если кто-то все еще борется с этим, единственное, что вам нужно сделать, это следующее:

Если вы хотите изменить размер главного окна, просто напишите следующий код.

Application.Current.MainWindow.Height = 420;

Если вы хотите изменить размер нового окна, кроме основного, просто напишите следующий код в файле .cs нового окна.

Application.Current.MainWindow = this; 
Application.Current.MainWindow.Width = 420;

Надеюсь, это поможет.

3 голосов
/ 18 августа 2011

У вас мало информации, поэтому я просто догадываюсь здесь.

Единственный способ воспроизвести окно, не обращая внимания на его настройки ширины и высоты, был, когда я установил SizeToContent на WidthAndHeight.

...