WPF中可调整大小的对话框窗口

时间:2017-03-24 11:43:02

标签: c# wpf windows mahapps.metro

我使用Mahapps的MetroWindow类来显示某种对话窗口。 我的想法是创建自动调整大小的窗口,以适应它的内容大小

<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>     

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

如果没有代码隐藏的WindowSizeChanged事件捕获,我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

把ResizeMode =“NoResize”和SizeToContent =“WidthAndHeight”