仅WPAM中的XAML多重绑定/触发器?

时间:2016-02-02 20:03:40

标签: c# wpf xaml

我对视图模型具有只读权限,可以连接到我的XAML视图。

在Pseudo-ish代码中,它看起来像:

public class HelloWorld:INotifyPropertyChanged{
  private int _counter;
  public int Counter {get{return ++_counter;}}
  public bool Foo {get{...}set{...InvokeINotifyPropertyChanged("Foo");}}
}

我有一个TextBlock,其Text属性绑定到Counter,但希望在标记时更改/设置Foo时重新评估它的值仅

我可以通过将TextBlock的{​​{1}}属性绑定到Text并将MultiBindingCounter都绑定为绑定来解决此问题,然后是创建一个实现Foo的转换器,但这看起来有点像矫枉过正。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

当您说只读时,您的意思是您甚至无法访问ViewModel源代码?在这种情况下,我会建议这样的事情:

public TestClass()
{
    _viewModel.PropertyChanged += OnPropertyChanged;
}

private void OnPropertyChanged(object sender, PropertyChangedEventArgs args)
{
    if (args.PropertyName == "Foo")
    {
        _textBlock.GetBindingExpression(TextBlock.TextProperty).UpdateTarget();
    }
}

但是如果你有权访问View-Model代码,你只需在Foo setter上调用InvokeINotifyPropertyChanged(" Counter")。