我有一个控件,在该控件中我有一个带有数据tempalte的资源:
<DataTemplate DataType="{x:Type local:FlowModel}">
<Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type vm:MainViewModel}}, Path=MainViewModel.ImagePath}"/>
</DataTemplate>
xmlns:vm="clr-namespace:CortexMonitoringTool.ViewModel"
我已将vm设置为我的ViewModel文件夹,我正在实现mvvm。我不能让我的约束力工作,我不确定为什么不。
有人可以告诉我,如果我的相对绑定是正确的,是否可以在我的MainViewModel类中看到我的属性'ImagePath'?
public String ImagePath
{
get
{
return _imagePath;
}
set
{
if (_imagePath == value)
{
return;
}
_imagePath = value;
RaisePropertyChanged("ImagePath");
}
}
谢谢。
答案 0 :(得分:10)
嗨,我设法让它发挥作用。
<DataTemplate DataType="{x:Type local:FlowModel}">
<Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.ImagePath}"/>
</DataTemplate>
我将AncestorType更改为'Window',它已准备好绑定到我的MainViewModel,然后使用'DataContext'。在我的路径中能够看到我的财产。
希望这有助于其他人!!
答案 1 :(得分:4)
您查看模型不是Visual树的一部分。所以找到祖先类型不会在那里工作。如果您找到具有datacontext的根父级,则可以使用其属性与like。
绑定<Image Source={...... Path=DataContext.MyProperty}"/>