WPF 中可调整大小的对话框 window

Resizable dialog window in WPF

我使用 Mahapps 的 MetroWindow class 来显示某种对话框 window。 我的想法是创建可自动调整大小的 window,以适应其内容大小

<controls:MetroWindow 
    ...
    DataContext="{Binding DialogVM, Source={StaticResource ViewModelLocator}}"
    Title="{Binding WindowHeader}"
    WindowTitleBrush="{StaticResource MainStyleTitleBrush}"
    Background="{StaticResource MainStyleBackgroundBrush}"
    wpfExtensions:SizeObserver.Observe="True"
    wpfExtensions:SizeObserver.ObservedWidth="{Binding xHeight, Mode=OneWayToSource}"
    wpfExtensions:SizeObserver.ObservedHeight="{Binding xWidth, Mode=OneWay}"
    MaxWidth="1110" MaxHeight="1080"
    MinWidth="450" MinHeight="600"
    ShowMinButton="False"
    ShowMaxRestoreButton="False"
    BorderThickness="1"
    BorderBrush="{StaticResource MainStyleBorderBrush}"
    SizeToContent="Width"
    WindowStartupLocation="CenterScreen">
    <Grid>
      <ContentPresenter  Content="{Binding VM}"/>
    </Grid>  
</controls:MetroWindo>     

但我有两个问题 第一个:我的 window 受到用户操作的影响(鼠标双击标题,将 window 拖动到屏幕的左边缘或右边缘,等等),我希望它被冻结,但可以调整大小。 第二个:当我再次重新显示相同的 window 时(没有重新创建它,但新内容可以具有新的可见大小)它显示在最后一个位置。

如何在不捕获 code-behind WindowSizeChanged 事件的情况下解决这个问题?

将 ResizeMode="NoResize" 和 SizeToContent="WidthAndHeight"