内容更改时阻止自动调整窗口大小

时间:2017-07-27 18:40:24

标签: wpf xaml

我制作了一张Window SizeToContent="Width"的图片浏览器。当我用系列中的第一张图片打开它时,这看起来就像我想要的那样。

当我进入系列中的下一张图片时,它比前一张更宽,Window会调整大小以适合这张新照片。 Window的左边缘位于同一位置,但Window的右边缘现在位于屏幕边缘之外。

如何防止像这样自动调整大小?

我不想使用ResizeMode="NoResize",因为我希望用户能够根据需要手动更改Window的大小。

XAML

<Window SizeToContent="Width" WindowStartupLocation="CenterOwner">
    <Grid>
        <DockPanel>
            <Button DockPanel.Dock="Left" 
                    Content="Previous" />
            <Button DockPanel.Dock="Right" 
                    Content="Next" />
            <Image Source="{Binding CurrentImage}" 
                   Stretch="Uniform" 
                   StretchDirection="DownOnly" 
                   RenderOptions.BitmapScalingMode="Fant" />
        </DockPanel>
    </Grid>
</Window>

1 个答案:

答案 0 :(得分:4)

重置Loaded事件处理程序中的SizeToContent属性:

public MainWindow()
{
    InitializeComponent();

    Loaded += (o, e) => SizeToContent = SizeToContent.Manual;
}

或者,如果你不喜欢背后的代码:

<Window.Triggers>
    <EventTrigger RoutedEvent="Loaded">
        <BeginStoryboard>
            <Storyboard>
                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="SizeToContent">
                    <DiscreteObjectKeyFrame KeyTime="0"
                                            Value="{x:Static SizeToContent.Manual}"/>
                </ObjectAnimationUsingKeyFrames>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Window.Triggers>