1
7
我的第一反应(这是一个强烈的反应)是说“不要这样做!”通过向视图模型提供对用户界面一部分的引用,您将破坏使视图模型如此强大和有用的封装。 例如,如果要对视图模型进行单元测试或将其序列化到磁盘上,该怎么办?在每种情况下,您的UI都将不存在,因为根本没有视图。您的测试将错过覆盖范围,您的重建将不完整。 如果视图模型实际上需要对UI对象的引用,并且没有更好的方法来构建它,那么最好的解决方案是让视图模型本身构造那些它需要引用的控件。然后,您的视图可以通过绑定将该控件合并为ContentPresenter的内容,并提供配置该控件的样式,包括用于提供其内容的ControlTemplate。因此:
和
其他可能性包括:
我的选择2如下:
setViewModelToThisPropertyChangedCallback中的代码将从DataContext获取视图模型,对其进行反射以查找“SpecialControl”属性,然后将其设置为文本框。请注意,setViewModelToThis的实现必须考虑到可能没有立即设置DataContext,并且可能需要删除旧设置并创建新设置才能对其进行更改。 |
2
2
首先,
|
user180708 · 将日期转换为英文日期 6 年前 |
Anthony Smyth · 如何更改禁用WPF按钮的按钮样式? 6 年前 |
Donat · 在XAML中绑定单例(UWP) 6 年前 |
Amibluesky · 扩展/减少文本块WPF/Xaml中的符号 6 年前 |
smoore4 · 访问代码隐藏中的XAML绑定 6 年前 |