我有一个带有两个用户控件的wpf窗口,其中第二个只在需要时显示。我只在XAML中设置窗口的MinWidth,MinHeight是通过数据绑定提供的,具体取决于是否显示第二个用户控件。现在:如何在运行时将窗口大小设置为与MinWidth / Height不同的值。我尝试在Show()之后的Show()之前设置各种事件(Initialized,Loaded等)中的值。我尝试使用和不使用UpdateLayout(),我尝试通过数据绑定设置高度/宽度。什么都行不通!但是,当我调试方法时,我看到窗口的高度/宽度属性设置为预期值,但ActualHeight / Width保持不变。我认为这将是一个小包,但事实证明它不是(对我而言)。求你帮忙。
答案 0 :(得分:9)
您是否尝试过设置
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>
单击按钮设置窗口高度。那是你在找什么?
答案 1 :(得分:3)
你没有提供太多信息,所以我只是在这里猜测。
当我将SizeToContent
设置为WidthAndHeight
时,我唯一能够重现窗口而不考虑其宽度和高度设置的方法。
答案 2 :(得分:3)
如果有人仍在努力解决这个问题,你唯一需要做的就是:
如果要调整主窗口的大小,只需编写以下代码。
Application.Current.MainWindow.Height = 420;
如果要调整主窗口以外的新窗口,只需在新窗口的.cs文件中编写以下代码。
Application.Current.MainWindow = this;
Application.Current.MainWindow.Width = 420;
希望它有所帮助。
答案 3 :(得分:0)
我只是简单地设置窗口的Height属性。
最初为_myWindow.Height = 400;
一旦内容需要调整大小,我将其设置如下:
double newWindowHeight = a + b;
,其中a + b使窗口变大,等等:
_myWindow.Height = newWindowHeight;