XAML/C#-未调用绑定属性

XAML/C#-未调用绑定属性,c#,wpf,xaml,data-binding,C#,Wpf,Xaml,Data Binding,不知道为什么会这样 为了清楚起见,我正在简化我的问题。我有两个变量参与数据绑定。一个变量可以很好地获取,但另一个变量无法获取 Example.xaml.cs: public partial class Example : UserControl { private string _name; private string _area; private AppClass _app; public Example(string name, AppClass app)

不知道为什么会这样

为了清楚起见,我正在简化我的问题。我有两个变量参与数据绑定。一个变量可以很好地获取,但另一个变量无法获取

Example.xaml.cs:

public partial class Example : UserControl
{
    private string _name;
    private string _area;
    private AppClass _app;

    public Example(string name, AppClass app)
    {
        InitializeComponent();
        _name = name;
        _app = app;
        this.DataContext = this;
        InitializeData();
    }

    private void InitializeData()
    {
        if (_app != null)
        {
            _area = _app.GetArea();
        }
    }

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }

    public string Area
    {
        get { return _area; }
        set { _area = value; }
    }
}
还有我的Example.xaml(只是感兴趣的行):



有趣的是,
Area
被称为fine,但是
Name
没有。我在
Name
Area
的getter上放置了一个断点,它在
Area
上断开,但在
Name
上断开。我很困惑…

属性是在
框架元素中定义的。将属性名称更改为其他名称


此外,UI不是存储数据的正确位置。与其这样做,不如创建一个适当的ViewModel来保存数据,并确保用户控件绑定到该ViewModel。

WPF?温特?Silverlight?我可以看到您在
InitializeData()
中使用
\u area
做了一些事情,但没有使用
\u name
…呜呜,我需要更擅长命名…谢谢,这就解决了问题。感谢MVVM的建议,我们最终也会迁移到那个位置。干杯
<TextBlock Grid.Row='0' Grid.Column ='0' Padding='5,0,0,0' Background='LightBlue' Text='Exchanger'/>
<TextBlock Grid.Row='0' Grid.Column ='1' Background='LightBlue' Text="{Binding Name}" TextAlignment='Center'/>

<TextBlock Grid.Row='2' Grid.Column ='0' Padding='5,0,0,0' Background='LightCyan' Text='Area'/>
<TextBlock Grid.Row='2' Grid.Column ='1' Background='LightCyan' Text="{Binding Area}" TextAlignment='Center'/>