无法绑定wpf中的模型

时间:2016-01-10 16:48:14

标签: c# wpf xaml

我是wpf的新手,我只是这样做一个简单的绑定:

我有一个班级:

public class Test
{
    public int x;
    public int y;
}

我将DataContext设置为它:

public partial class MainWindow : Window
{
    Test a;
    public MainWindow()
    {
        InitializeComponent();
        a = new Test();
        a.x = 5;
        a.y = 6;
        DataContext = a;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Console.WriteLine(a.x);
        Console.WriteLine(a.y);
    }
}

在XAML中:

<TextBox Grid.Row="0" Grid.Column="0" Text="{Binding x}"></TextBox>
<TextBox Grid.Row="1" Grid.Column="0" Text="{Binding y}"></TextBox>
<Button Grid.Row="2" Grid.Column="0"  Content="Show" Click="Button_Click"></Button>

然后文本框没有值,当我按下按钮时,值仍然相同。

我试着在教程中这样绑定:

DataContext = this;
在XAML中

<TextBox Grid.Row="0" Grid.Column="0" Text="{Binding Width}"></TextBox>
<TextBox Grid.Row="1" Grid.Column="0" Text="{Binding Height}"></TextBox>

它有效,有人可以向我解释这里有什么问题吗? 谢谢

1 个答案:

答案 0 :(得分:2)

如注释字段中所述,它不是有效的绑定源。您需要将其转换为属性

public class Test
{
    public int x { get; set; }
    public int y { get; set; }
}

有关有效绑定源的完整列表,请检查Binding Sources Overview链接,但简而言之

  

您可以绑定到任何公共语言运行时(CLR)对象的公共属性,子属性以及索引器