2016-03-20 2 views
0

У меня есть окно:окна не изменение размера к содержимому

<Window x:Class="HarryPotter.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:HarryPotter" 
     mc:Ignorable="d" 
     Title="Harry Potter" SizeToContent="WidthAndHeight" Background="Black" WindowStartupLocation="CenterScreen" 
     > 
    <Viewbox Stretch="Uniform"> 
     <Canvas Height="640" Width="480" Background="DodgerBlue"> 

     </Canvas> 
    </Viewbox> 
</Window> 

В дизайнере, Viewbox в Width = 480 и высота = 640. Таким образом, ширина и высота окна является 488 и 671. Это именно то, что я хотеть.

Я хочу, чтобы ViewBox был того же размера, что и Canvas при запуске и окне размером до размера ViewBox. Затем я хочу, чтобы окно свободно изменялось. Однако это не то, что происходит. Когда окно открывается, высота - это высота моего монитора.

Как это исправить?

ответ

1

Вы используете ViewBox, чтобы соответствовать содержимому в доступном пространстве, растягивая его равномерно. Однако, поскольку вы не определяли высоту или ширину для доступного пространства (SizeToContent = "WidthAndHeight"), он занимает все пространство, чтобы растянуть холст.

Чтобы поэкспериментировать, вы можете установить Height="50" и увидеть, что окно занимает все горизонтальное пространство.

Чтобы предотвратить это у вас есть несколько вариантов:

  • Set Stretch свойство ViewBox в None вместо Uniform.
  • Задайте предопределенные Width или Height за Window.
  • MaxHeight или MaxWidth Недвижимость ViewBox.