Uwp绑定控件在viewmodel中获取Width

时间:2016-12-10 22:15:29

标签: mvvm uwp

我目前正在使用地图控件处理UWP应用。我使用mvvm(没有框架)来做这件事。 在我的viewmodel中,我会计算你实际看到的米数(宽度)。我通过计算一个像素代表多少米来做到这一点,然后我将其乘以控件的宽度。问题出在哪里。 在WPF中,您有一个模式OneWayToSource,它将设置源值而不更改目标值。但在UWP中缺少这一点。 如果我使用绑定,我必须在viewmodel中设置宽度。这是我不想要的。我只是想得到地图的宽度。 这不是唯一的问题。我实际上并不需要宽度,因为这给了NaN,我需要的是ActualWidth。但这是一个支持领域,你不能从xaml绑定到这个。

在保留mvvm模式的同时有解决方案吗?

1 个答案:

答案 0 :(得分:2)

ActualWidth和ActualHeight绝不应该是绑定的源或目标。 They simply don't work in that situation.您需要通过侦听其SizeChanged事件来获取元素的大小。有三种方法可以做到这一点:

  1. x:将SizeChanged事件绑定到视图模型中的方法。
  2. 创建一个附加属性,通过侦听SizeChanged事件将其值与元素的大小同步。然后,您可以将TwoWay绑定到此属性。
  3. 写一个与2基本相同的行为。