将View绑定到ViewModel时绑定控件?

时间:2017-09-29 21:53:31

标签: wpf mvvm data-binding

这是我的情况。我有一个View和一个ViewModel。视图的DataContext设置为ViewModel。由于使用了第三方控件,我不得不在代码隐藏中加入一些代码。在代码隐藏中,我创建了一个名为StraightConnectorTool的对象。

在我的视图中,我需要绑定到此对象。如果在代码隐藏中设置了View的DataContext:

DataContext = this;

以下绑定正常。

<BarItemToolBehavior ActiveTool="{Binding ActiveTool, ElementName=diagram, Mode=TwoWay}" 
                                 Tool="{Binding StraightConnectorTool}"/>

其中,图表是View上的第三方控件的名称,ActiveTool是其中一个属性。

但是,如果将View的DataContext设置为ViewModel,则绑定不起作用。当我们将DataContext设置为ViewModel时,我试图弄清楚如何绑定到视图。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这不是一个好习惯,但您可以将BarItemToolBehavior的DataContext绑定到视图。在后面的代码中使用名称或在XAML中使用RelativeSource FindAncestor来查找视图。更好的解决方案是将该对象移动到它所属的VM。