繁体   English   中英

仅XAML可在WPF中进行多重绑定/触发器?

[英]XAML only Multibinding / Trigger in WPF?

我对连接到XAML视图的视图模型具有只读访问权限。

在伪代码中,它类似于:

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

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

通过将TextBlockText属性绑定到MultiBinding并包括CounterFoo作为绑定,然后创建一个实现IMultiValueConverter的Converter,我可以解决这个问题,但这似乎有点过头了。

有更好的方法吗?

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

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

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

但是,如果您有权访问视图模型代码,则只需在Foo setter上调用InvokeINotifyPropertyChanged(“ Counter”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM