我对视图模型具有只读权限,可以连接到我的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
并将MultiBinding
和Counter
都绑定为绑定来解决此问题,然后是创建一个实现Foo
的转换器,但这看起来有点像矫枉过正。
有更好的方法吗?
答案 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")。