折叠后WPF扩展器和窗口大小调整?

折叠后WPF扩展器和窗口大小调整?,wpf,Wpf,我正在处理一个关于主窗口在扩展器折叠后重新调整大小的问题,在此之前,通过拖放将窗口手动调整为更大的大小。展开器已折叠,但主窗口的大小未调整为“适合”内部构件的大小 组件被放置到自动调整大小的网格列中,主窗口被设置为WidhtAndHeight大小内容 主窗口属性集: SizeToContent="WidthAndHeight" <Expander Name="expander" Grid.Column="2" Grid.Row="0" Grid.RowSpan="5" ExpandDir

我正在处理一个关于主窗口在扩展器折叠后重新调整大小的问题,在此之前,通过拖放将窗口手动调整为更大的大小。展开器已折叠,但主窗口的大小未调整为“适合”内部构件的大小

组件被放置到自动调整大小的网格列中,主窗口被设置为WidhtAndHeight大小内容

主窗口属性集:

SizeToContent="WidthAndHeight"
<Expander Name="expander" Grid.Column="2" Grid.Row="0" Grid.RowSpan="5" ExpandDirection="Right" ToolTip="Expand window for history details" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed" SizeChanged="expander_SizeChanged" >
        <Expander.Header>
            <TextBlock RenderTransformOrigin="0.3,1.5">
                    <TextBlock.RenderTransform>
                        <TransformGroup>
                            <RotateTransform Angle="90" />
                        </TransformGroup>
                    </TextBlock.RenderTransform>
                    Show history
                </TextBlock>
        </Expander.Header>
        <StackPanel>               
            <ListView ItemsSource="{Binding Path=HistoryList}" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" MaxHeight="350" >
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Operation" DisplayMemberBinding="{Binding Operation}" />
                    <GridViewColumn Header="Result" DisplayMemberBinding="{Binding Result}" />
                </GridView>
            </ListView.View>
        </ListView>
        </StackPanel>
    </Expander>
我已经通过代码隐藏和事件处理程序(在折叠和展开事件时)完成了解决方案。但我认为WPF有更好的方法

扩展器XAML实现:

SizeToContent="WidthAndHeight"
<Expander Name="expander" Grid.Column="2" Grid.Row="0" Grid.RowSpan="5" ExpandDirection="Right" ToolTip="Expand window for history details" Expanded="Expander_Expanded" Collapsed="Expander_Collapsed" SizeChanged="expander_SizeChanged" >
        <Expander.Header>
            <TextBlock RenderTransformOrigin="0.3,1.5">
                    <TextBlock.RenderTransform>
                        <TransformGroup>
                            <RotateTransform Angle="90" />
                        </TransformGroup>
                    </TextBlock.RenderTransform>
                    Show history
                </TextBlock>
        </Expander.Header>
        <StackPanel>               
            <ListView ItemsSource="{Binding Path=HistoryList}" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Auto" MaxHeight="350" >
            <ListView.View>
                <GridView>
                    <GridViewColumn Header="Operation" DisplayMemberBinding="{Binding Operation}" />
                    <GridViewColumn Header="Result" DisplayMemberBinding="{Binding Result}" />
                </GridView>
            </ListView.View>
        </ListView>
        </StackPanel>
    </Expander>

展示历史
有人知道如何解决这个案子吗


感谢您的建议。

手动调整窗口大小后,SizeToContent属性似乎会失去其价值,要解决此问题,只需订阅窗口的OnSizeChanged事件,然后重置SizeToContent属性:

XAML:


感谢您的回复,我也想到了这个选项,但解决方案将不起作用。对事件大小更改的每次调用都无法使用内部控件的“当前”高度和宽度。然后重新调整大小以初始化h-w值。我正在使用这种方法:我为extender\u创建了一个事件处理程序,在这里我将mainWindow sizeToContent属性重新启动为“Width”枚举值。这是可行的,但当控件折叠并再次扩展时,扩展器内控件在调整大小后的新w/h值会被忽略。我很好奇在视图层中是否存在XAML语言的解决方案。。。