Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t绑定到DependencyObject的DependencyProperty子级_C#_Wpf_Binding - Fatal编程技术网

C# Can';t绑定到DependencyObject的DependencyProperty子级

C# Can';t绑定到DependencyObject的DependencyProperty子级,c#,wpf,binding,C#,Wpf,Binding,我不知道如何绑定我的图像: <Image Source="{ Binding Path=ViewModel.MainViewModel.ProcessedImage }" Name="image1"/> 我希望你能帮我解决这个问题。我尝试了不同的方法,但似乎没有任何效果。您如何设置数据上下文?我复制了您的代码并添加了另一个属性-ProcessedImageName,默认值为“Hello World” 我将数据上下文设置如下: public MainWindow()

我不知道如何绑定我的图像:

<Image Source="{ Binding  Path=ViewModel.MainViewModel.ProcessedImage }" Name="image1"/>

我希望你能帮我解决这个问题。我尝试了不同的方法,但似乎没有任何效果。

您如何设置数据上下文?我复制了您的代码并添加了另一个属性-ProcessedImageName,默认值为“Hello World”

我将数据上下文设置如下:

    public MainWindow()
    {
        InitializeComponent();
        ViewModel.MainViewModel = new ViewModel();
        DataContext = ViewModel.MainViewModel;
    }
我将绑定路径设置为:

<TextBlock Text="{Binding Path=ProcessedImageName }"/>

属性的路径是相对于数据上下文的,因此如果属性是Class.PropertyName,数据上下文是Class,那么绑定路径就是PropertyName。

为什么您的VM基于DependencyObject?您可能应该使用INotifyPropertyChanged并将视图中的DataContext设置为与视图模型相等。然后你可以设置ProcesseImage的路径,它可以是一个POCOI。我之所以选择这种方法,是因为我觉得它更简单。当然,如果可能的话,我宁愿这样做。绑定到DependencyObject类的子元素是不可能的吗?仅仅因为某些东西更简单,并不意味着它一定是正确的。MVVM模式用于在以后创建更简单的维护。如果您要创建这样的UI依赖项,那么您最好还是坚持使用WinForms编码(您可以使用WPF来做到这一点),我将本文作为参考。它指出:“在我看来,一个基本的MVVM框架实际上只需要两件事:一个是DependencyObject或实现INotifyPropertyChanged以完全支持数据绑定的类,以及某种命令式支持。”我知道您的方法更受欢迎,但我还是想尝试DependencyObject one。我想我会继续寻找解决方案。非常感谢,你已经找到了!
    public MainWindow()
    {
        InitializeComponent();
        ViewModel.MainViewModel = new ViewModel();
        DataContext = ViewModel.MainViewModel;
    }
<TextBlock Text="{Binding Path=ProcessedImageName }"/>
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ViewModel();
    }