使用 MVVM 的 WPF:与 RelativeSource 的数据绑定
本文关键字:RelativeSource 数据绑定 WPF MVVM 使用 | 更新日期: 2023-09-27 18:35:56
我有一个控件,在该控件中,我有一个带有数据临时的资源:
<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 设置为我的视图模型文件夹,我正在实施 mvvm。我无法让我的绑定工作,我不确定为什么不这样做。
有人可以告诉我我的相对绑定是否正确,它是否真的可以在我的 MainViewModel 类中看到我的属性"ImagePath"?
public String ImagePath
{
get
{
return _imagePath;
}
set
{
if (_imagePath == value)
{
return;
}
_imagePath = value;
RaisePropertyChanged("ImagePath");
}
}
谢谢。
嗨,
我设法让它工作。
<DataTemplate DataType="{x:Type local:FlowModel}">
<Image Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.ImagePath}"/>
</DataTemplate>
我将我的AncestorType更改为"Window",它已全部绑定到我的MainViewModel,然后在我的路径中使用"DataContext."以查看我的属性。
希望这对其他人有所帮助!!
视图模型不是可视化树的一部分。 因此,查找祖先类型在那里不起作用。 如果你找到具有数据上下文的根父级,那么你可以使用它的属性与 like 绑定。
<Image Source={...... Path=DataContext.MyProperty}"/>