C# 从XAML将窗口对象绑定到viewmodel属性
我的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
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();