C# 从XAML将窗口对象绑定到viewmodel属性

C# 从XAML将窗口对象绑定到viewmodel属性,c#,wpf,mvvm,binding,C#,Wpf,Mvvm,Binding,我的viewmodel如下所示: public class ViewModel { public IView View { get; set; } } 以及实现IView的窗口 我需要在不更改ViewModel类的情况下将此确切窗口绑定到view属性 仅使用该窗口的XAML就可以做到这一点吗 我可以这样做: 但是必须更改视图模型,这在本例中是不可取的。您需要在XAML中实例化视图模型并将其设置为DataContext: <Window x:Class="MyApp.AppWind

我的viewmodel如下所示:

public class ViewModel
{
    public IView View { get; set; }
}
以及实现
IView
的窗口

我需要在不更改
ViewModel
类的情况下将此确切窗口绑定到
view
属性

仅使用该窗口的XAML就可以做到这一点吗

我可以这样做:


但是必须更改视图模型,这在本例中是不可取的。

您需要在XAML中实例化视图模型并将其设置为DataContext:

<Window x:Class="MyApp.AppWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyApp.ViewModels">
      <Window.DataContext>
           <local:ViewModel/>
      </Window.DataContext>
</Window>


您需要在XAML中实例化ViewModel并将其设置为DataContext:

<Window x:Class="MyApp.AppWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:MyApp.ViewModels">
      <Window.DataContext>
           <local:ViewModel/>
      </Window.DataContext>
</Window>



我已经将ViewModel绑定到DataContext(以其他方式,但仍然)。现在,我需要将此窗口本身绑定到ViewModel.View。@InfernumDeus您只需要将属性视图添加到路径中,就像您要绑定到的IView中的公共属性文本列表一样。例如,问题是我已经知道如何从IView绑定数据。我需要绑定此
对象才能访问VIewModel内部的IView。为了明确起见,我需要在我的
公共IView视图
属性中使用Window对象。您无需更改ViewModels代码本身,只需更改设置窗口数据上下文的代码即可。。。那么:您在哪里实例化ViewModel对象/在哪里设置DataContext?我已经将ViewModel绑定到DataContext(以其他方式,但仍然如此)。现在,我需要将此窗口本身绑定到ViewModel.View。@InfernumDeus您只需要将属性视图添加到路径中,就像您要绑定到的IView中的公共属性文本列表一样。例如,问题是我已经知道如何从IView绑定数据。我需要绑定此
对象才能访问VIewModel内部的IView。为了明确起见,我需要在我的
公共IView视图
属性中使用Window对象。您无需更改ViewModels代码本身,只需更改设置窗口数据上下文的代码即可。。。同样:您在何处实例化ViewModel对象/在何处设置DataContext?如何设置窗口的DataContext属性?基本上:
window.DataContext=New ViewModel(properties)。然后:
window.ShowDialog()。如果需要,此部分可能会更改。那么只设置视图模型的View属性如何
window.DataContext=newviewmodel(properties){View=window}就是这样!非常感谢。如何设置窗口的DataContext属性?基本上:
window.DataContext=New ViewModel(属性)。然后:
window.ShowDialog()。如果需要,此部分可能会更改。那么只设置视图模型的View属性如何
window.DataContext=newviewmodel(properties){View=window}就是这样!非常感谢。
var vm = new ViewModel(properties);
vm.View = window;
window.ShowDialog();