Растяжение холста WPF по горизонтали - PullRequest
8 голосов
/ 03 июня 2009

Как мне сделать растяжение Canvas полностью горизонтально с переменной шириной? Это родитель Canvas, поэтому у него нет родителей, только дети.

Источник XAML: отображается в смеси http://resopollution.com/xaml.txt

Ответы [ 5 ]

14 голосов
/ 03 июня 2009

Используйте Grid в качестве элемента верхнего уровня в вашем пользовательском интерфейсе - он растянется, чтобы заполнить свой контейнер. Затем поместите Canvas с HorizontalAlignment="Stretch" в Grid, и он будет вести себя так, как вы хотите.

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Canvas Background="Blue"/>
</Grid>

Это сработало для меня. Ключ - ваш элемент пользовательского интерфейса верхнего уровня. В то время как Grid заполняет все доступное пространство по умолчанию, Canvas занимают столько места, сколько требует их содержимое.

4 голосов
/ 03 июня 2009

Полагаю, вы пытались
canvas.HorizontalAlignment = HorizontalAlignment.Stretch

Если это не сработает, то вы можете связать свойства Width и Height холста со свойствами ActualWidth и ActualHeight содержащего окна.

1 голос
/ 04 июня 2009

Проблема в том, что вы указываете Height и Width. Без этих свойств элемент управления может показаться исчезающим в конструкторе, но он должен иметь соответствующий размер при вставке холста в другой элемент управления.

Если я правильно помню, следующая версия WPF будет иметь свойства 'DesignWidth' и 'DesignHeight', которые позволяют отображать элемент управления в конструкторе с заданным размером, не влияя на его измерение при вставке в другие элементы управления.

1 голос
/ 03 июня 2009

Холст должен делать это автоматически, если вы вручную не устанавливаете высоту и / или ширину. На каком контроле вы пытаетесь разместить холст? Вы можете разместить свой код?

1 голос
/ 03 июня 2009

Вы можете использовать панель док-станции, чтобы заполнить доступную ширину. Последний элемент в списке элементов управления панели док-станции автоматически растягивается, чтобы заполнить оставшееся пространство.

<DockPanel>
   <Canvas />
</DockPanel>
...