【问题标题】:Notify ViewModel when View's RenderTransformProperty changes当 View 的 RenderTransformProperty 发生变化时通知 ViewModel
【发布时间】:2016-01-20 04:57:34
【问题描述】:

我在UIElement RenderTransformProperty 上有一个双向绑定。从ViewModel 连接到View 工作正常,ViewModel 可以从View 读取更新的值,但ViewModel 不知道View 中的属性何时更改。我知道我可以创建自己的DependencyProperty 并传递价值,但这似乎是错误的。当View's RenderTransformProperty 发生变化时,如何正确通知ViewModel

在视图中:

var renderTransformBinding = new Binding
{
  Path = new PropertyPath("SymbolTransform"),
  Mode = BindingMode.TwoWay
};
SetBinding(RenderTransformProperty, renderTransformBinding);

在 ViewModel 中(使用 MVVM Light):

private Transform _symbolTransform;
public Transform SymbolTransform
{
    get { return _symbolTransform; }
    set
    {
        if (Set(() => SymbolTransform, ref _symbolTransform, value))
        {
            _isDirty = true;
        }
    }
}

【问题讨论】:

  • Transform 是一个 UI 相关的类。我不认为在 ViewModel 中定义一个与 UI 相关的类是一个好主意。
  • 您可能希望将UpdateSourceTrigger 绑定到PropertyChanged

标签: c# wpf mvvm


【解决方案1】:

我错了。 ViewModel 正在被通知更改 - 即正在调用 setter。由于某种原因_symbolTransformvalue 相等,所以if (Set(() => SymbolTransform, ref _symbolTransform, value)) 返回false。不知道 _symbolTransform 在调用 setter 之前(显然)是如何更新的。

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 2015-07-01
    • 2012-02-29
    • 1970-01-01
    • 2017-10-18
    • 2022-07-22
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多