2017-07-27 128 views
1

我製作了一個圖片查看器,它是WindowSizeToContent="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> 
+0

刪除'SizeToContent = 「寬度」'。也許你真正的問題是,「我正在調整我的窗口的內容,因爲[列表原因]。這很糟糕,因爲窗口不斷調整大小,因爲我顯示不同的圖像。這是我的XAML [白色]。我怎樣才能達到[理由]行爲?」 – Will

+0

如果我刪除'SizeToContent',窗口總是太大。我希望窗口大小適當,以便第一個圖像正確顯示,然後不再調整大小(除非通過用戶交互)。 'SizeToContent'精美地完成了第一個。 – GTHvidsten

+0

@GTHvidsten如果是這樣的話,你可以通過代碼獲得第一個圖像的寬度並將其應用到啓動窗口 –

回答

3

重置在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> 
+0

這似乎按照我的意圖工作。當然,我現在還有其他尺寸問題,但與他們無關。謝謝。 – GTHvidsten

相關問題