设置Window.Datacontext

时间:2012-11-16 03:56:30

标签: wpf xaml data-binding

我正在尝试使用我的viewmodel作为我的窗口的datacontext但是我收到了错误:

  

Windows Presentation Foundation(WPF)项目不支持ViewModel。

显然,我不了解语法并将我的窗口数据绑定到我的视图模型,但我不确定我不知道它是什么。

有关我应该阅读的内容的任何建议?

<Window x:Class="SunnyBeam.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="SunnyBeam" Height="488.358" Width="1014.552">
    <Window.DataContext>
        <ViewModel/>
    </Window.DataContext>
    <Grid>

    </Grid>
</Window>

3 个答案:

答案 0 :(得分:1)

通常我通过代码隐藏设置DataContext:

public partial class Flor1 : Window
{
    public Flor1()
    {
        var dc = new MyViewModel();
        dc.LoadData();
        DataContext = dc;
        InitializeComponent();
    }
}

代替MyViewModel可能是您要绑定的任何内容。

答案 1 :(得分:1)

定义类

 public class ViewModel
 {
    public string Name { get; set; }
    public ViewModel()
    {

    }
 }

在xaml中使用

<Window x:Class="WpfApplication2.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ui="clr-namespace:WpfApplication2"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <ui:ViewModel/>
</Window.DataContext>
<Grid>

</Grid>

它应该有用。

答案 2 :(得分:0)

我以为我会用这个错误来总结我的经验。

我的数据上下文设置与下面相同,并不断出现一个错误,即ViewModel不存在,我知道确实如此。我拒绝在后面的代码中设置它,只是重建我的项目实际上可以解决此错误。

<Window.DataContext>
    <ViewModel/>
</Window.DataContext>