【问题标题】:How to retrieve Canvas dimensions in the viewmodel如何在视图模型中检索画布尺寸
【发布时间】:2011-02-21 02:22:33
【问题描述】:

我在可调整大小的窗口中有一个 Canvas 元素;此画布上有许多连接在一起的 Image 和 ArcElement。我试图让图像的位置相对调整以响应窗口/画布的大小调整,但由于某种原因,我无法读取画布的尺寸。

主窗口定义为:

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

我已经连接了 MvvMLight 的 EventToCommand 以便我可以路由 Canvas 的 LayoutUpdated 或 SizeChanged 事件到我的视图模型;我尝试对 Canvas 的 Width 和 Height 属性进行数据绑定,但尺寸始终为零,这意味着 Canvas 上的所有图像都会出现死点而不是按需要定位。

【问题讨论】:

    标签: wpf mvvm binding


    【解决方案1】:

    事实证明,我使用 MvvmLight 的 EventToCommand 朝着正确的方向前进;有一个属性PassEventArgsToCommand,当设置为True 时,会将事件参数发送到视图模型中的相应RelayCommand。所以在视图模型中,我就这样初始化了命令:

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

    RecalculateObjectPositions 方法中,我可以访问e.NewSize 来查找画布的新尺寸。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-24
      • 2018-11-24
      • 1970-01-01
      相关资源
      最近更新 更多