我试图弄清楚如何在控件展开或折叠Window
后调整我的应用程序的大小。Expander
它必须增长或缩小。我之前在 StackOverflow 上看到的所有案例都建议设置SizeToContent="WidthAndHeight"
. 这是一个正确的工作流程还是我应该手动更改大小?
该应用程序由以下组成,MainWindow
其中包含Expander
基于 - 的用户控件StackPanel
:
<Window x:Class="WpfAppBlend.MainWindow"
Title="MainWindow" Width="517" Height="298"
SizeToContent="Manual" ResizeMode="NoResize"
SizeChanged="Window_SizeChanged">
<StackPanel>
<local:UCForm/>
</StackPanel>
</Window>
这是我的UserControl
:
<UserControl x:Class="WpfAppBlend.UCForm"
d:DesignWidth="500" d:DesignHeight="320"
Width="500" Height="320">
<Grid>
<Expander ExpandDirection="Down" Header="Bookmarks"
Expanded="Expander_Expanded"
Collapsed="Expander_Collapsed">
<TextBlock>
Some text here...
</TextBlock>
</Expander>
</Grid>
</UserControl>
在我的UserControl
代码隐藏中,我有两个空事件处理程序:
public partial class UCForm : UserControl
{
private void Expander_Expanded(object sender, RoutedEventArgs e){
// How to get the instance of the Main Window here
// to change it's Height?
}
private void Expander_Collapsed(object sender, RoutedEventArgs e){
// How to get the instance of the Main Window here
// to change it's Height?
}
}
我的MainWindow
班级如下所示:
public partial class MainWindow : Window
{
public MainWindow(){
InitializeComponent();
}
private void Window_SizeChanged(object sender, SizeChangedEventArgs e){
}
}
这就是我所拥有的:
设置SizeToContent="WidthAndHeight"
对我不起作用。Expander 会扩展,但窗口大小不会改变。
更新:问题现在解决了。问题在于固定高度。因此,如果您想SizeToContent
完成所有脏活,则永远不要在. 当您指定 UserControl 的固定高度时,您必须在您的 UserControl 类的和处理程序中自行处理大小更改。我的应用程序布局现在很好:Height
ExpandDirection="Down"
Expanded()
Collapsed()