[英]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
时才能重新评估它的值。
通过将TextBlock
的Text
属性绑定到MultiBinding
并包括Counter
和Foo
作为绑定,然后创建一个实现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.