我在可调整大小的窗口中有一个Canvas元素;在这个画布上有许多连接在一起的Image和ArcElements。我试图让图像的位置相对于窗口/画布的大小调整而相对调整,但由于某种原因我无法读取画布的尺寸。
主窗口定义为:
<Page>
<DockPanel LastChildFill="True">
<TextBox DockPanel.Dock="Top">Message</TextBox>
<Canvas></Canvas>
</DockPanel>
</Page>
我已经连接了MvvMLight的EventToCommand,以便我可以路由Canvas的LayoutUpdated或者 SizeChanged事件到我的viewmodel;我试图对Canvas的Width和Height属性进行数据绑定,但是尺寸总是为零,这意味着画布上的所有图像都会显示为死点,而不是根据需要定位。
答案 0 :(得分:1)
事实证明我使用MvvmLight的EventToCommand正朝着正确的方向前进;有一个属性PassEventArgsToCommand
,当设置为True
时,会将事件args发送到viewmodel中相应的RelayCommand
。所以在viewmodel中,我这样初始化了命令:
Commands.ResizeCommand = new RelayCommand<SizeChangedEventArgs>(action => RecalculateObjectPositions(action));
在RecalculateObjectPositions
方法中,我可以访问e.NewSize
来查找画布的新大小。