Как получить размеры Canvas в модели представления - PullRequest
1 голос
/ 21 февраля 2011

У меня есть элемент Canvas в окне с изменяемыми размерами; На этом холсте несколько изображений и ArcElements, которые связаны между собой. Я пытаюсь заставить положение изображений корректироваться относительно в ответ на изменение размера окна / холста, но по какой-то причине я не могу прочитать размеры холста.

Главное окно определяется как:

<Page>
<DockPanel LastChildFill="True">
<TextBox DockPanel.Dock="Top">Message</TextBox>
<Canvas></Canvas>
</DockPanel>
</Page>

Я подключил EventToCommand MvvMLight, чтобы я мог направить Canvas's LayoutUpdated или События SizeChanged для моей модели представления; Я попытался связать данные в свойствах «Ширина» и «Высота» холста, но размеры всегда оказывались равными нулю, а это означало, что все изображения на холсте будут отображаться в мертвой точке, а не располагаться по желанию.

1 Ответ

1 голос
/ 21 февраля 2011

Оказывается, я направлялся в правильном направлении, используя EventToCommand MvvmLight; есть атрибут PassEventArgsToCommand, который при значении True отправляет аргументы события соответствующему RelayCommand в модели представления. Поэтому в viewmodel я инициализировал команду следующим образом:

Commands.ResizeCommand = new RelayCommand<SizeChangedEventArgs>(action => RecalculateObjectPositions(action));

и в методе RecalculateObjectPositions я могу получить доступ к e.NewSize, чтобы найти новый размер холста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...