![]() |
1
0
有几种方法可以访问超出范围的数据上下文。 1)elementname绑定 这可能是最不有用的,因为在大多数现实场景中,您尝试绑定的内容都超出了名称范围。但这是一种访问并行或父数据上下文的方法,只要框架元素在名称范围内。
2)相对资源绑定 这类似于1,但使用relativesource导航到适当的可视元素并获取数据上下文。当然,这假定您尝试获取的数据上下文位于您当前在可视化树中的位置之上。 3)使用静态继电器 您可以在作为ViewModel外观的静态类中公开替代的ControlPresenter。然后,在每个ViewModel中构造传递给静态方法/属性的实例属性。这是跨多个视图模型实现共享存储的常用方法。我知道这种技术需要您稍微改变一下您的模式,但是在这些“ControlPresenter”类周围添加一个简单的ViewModel包装器似乎比您描述的选项要简单得多。 |
![]() |
2
0
我最终在代码中设置了绑定,方法是将binding.source设置为所需的ViewModel,然后在数据库中使用binding.path的路径。我将绑定存储在一个字典(DependencyProperty,bindingBase)中,当控件加载时,我使用bindingOperations.setbinding设置控件上的绑定。除了偶尔出现的操作顺序问题(例如,如果在itemssource之前设置了selectedItem/selectedValue,则会设置该项,但不会显示在组合框中),这似乎非常有效。 |
![]() |
Kryptonit364 · 在DataGrid中隐藏调整大小和选择列 3 年前 |
![]() |
hassan Ma · 从顶部将文本插入WPF文本块 3 年前 |
![]() |
Arijit · 移动画布内绘制的矩形 3 年前 |
![]() |
juraj14466 · C#WPF实时图表将点渲染为图像 3 年前 |