数据绑定没有错误,但无法看到绑定的输出

时间:2016-12-01 15:23:23

标签: c# wpf xaml

我正在尝试学习WPF,但我仍然坚持使用最初的绑定示例。 我希望从代码中显示的属性中看到文本框中的文字。我已经看到了一些相关的问题,我已经尝试了他们的答案,但不幸的是,这些都不符合我的需要。此外,如果有人能告诉我一些从基础开始并进入高级水平的好教程。我正在寻找msdn教程,但我发现它们非常复杂(或太多文本)使事情变得更复杂。

MainWindow.xaml.cs

namespace WpfApplication1
{     
    public partial class MainWindow : Window
    {
        public string Name { get; set; }

        public MainWindow()
        {
            Name = "Dummy";
            InitializeComponent();
            DataContext = this;


        }
    }
}

MainWindow.xaml

 <Window x:Class="WpfApplication1.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApplication1"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <TextBox Text="{Binding Path=Name}"></TextBox>
        </Grid>
    </Window>

2 个答案:

答案 0 :(得分:1)

属性Name隐藏了基类的Name属性(Visual Studio会对此发出警告)。您正在设置新属性,而XAML中的Binding使用基类属性。

选择其他属性名称:

public string MyName { get; set; }

public MainWindow()
{
    MyName = "Dummy";
    InitializeComponent();
    DataContext = this;
}

XAML:

<TextBox Text="{Binding Path=MyName}" />

答案 1 :(得分:0)

要解决此问题,请创建一个新类:

public class MainWindowViewModel
{
    public string Name { get; set; }

    public MainWindowViewModel()
    {
        Name = "Dummy";
    }

}

并将后面的代码更改为:

    public MainWindow()
    {
        DataContext = new MainWindowViewModel();

        InitializeComponent();
    }

然后它应该工作。

当您搜索MVVM时,可以在Youtube中找到教程。