XAML / C# - 绑定属性不会被调用

时间:2013-03-15 21:40:24

标签: 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)
    {
        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(只是感兴趣的行):

<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'/>

有趣的是,Area被称为罚款,但Name没有。我在NameArea的getter上设置了一个断点,它在Area而不是Name上断开。我很困惑......

1 个答案:

答案 0 :(得分:1)

Name属性在FrameworkElement中定义。将属性名称更改为其他名称。

此外,UI不是存储数据的正确位置。而不是这样做,创建一个适当的ViewModel来保存您的数据,并确保您的usercontrol绑定到该ViewModel。