在 WPF 中仅 XAML 多绑定/触发器
本文关键字:绑定 触发器 XAML WPF 中仅 | 更新日期: 2023-09-27 18:33:06
我对连接到我的 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
的转换器,但这似乎有点矫枉过正。
有没有更好的方法?
当你说只读时,你的意思是你甚至无法访问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")。