我是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>
它有效,有人可以向我解释这里有什么问题吗? 谢谢
答案 0 :(得分:2)
如注释字段中所述,它不是有效的绑定源。您需要将其转换为属性
public class Test
{
public int x { get; set; }
public int y { get; set; }
}
有关有效绑定源的完整列表,请检查Binding Sources Overview链接,但简而言之
您可以绑定到任何公共语言运行时(CLR)对象的公共属性,子属性以及索引器