我是新来的WPF,我想弄清楚数据绑定是如何工作的,但我没有太多的运气。帮助WPF数据绑定
我想从简单的东西开始 - 将文本框的内容绑定到我的程序中的字符串变量。
我读了很多关于数据绑定,XML命名空间,标记扩展,资源,依赖项属性和whatnot的MSDN文档页面,而且我仍然无法使其工作。
这里是我的MainWindow.xaml:
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:c="clr-namespace:WpfTest"
Title="MainWindow">
<Grid>
<Grid.Resources>
<c:Foo x:Key="MyFoo"/>
</Grid.Resources>
<TextBox Width="100" Height="28"
Text="{Binding Source=MyFoo,
Path=BarProperty,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
</Window>
而且我MainWindow.xaml.cs:
namespace WpfTest
{
public class Foo : DependencyObject
{
public static readonly DependencyProperty BarProperty = DependencyProperty.Register("Bar", typeof(String), typeof(Foo));
public String Bar
{
get { return (String)GetValue(BarProperty); }
set { SetValue(BarProperty, value); }
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
MyFoo = new Foo { Bar = "hello" };
}
public Foo MyFoo { get; set; }
}
}
我期望的文本框中显示 “你好” 时,该程序启动,但它是空的。
有人能告诉我我做错了什么吗?
如果你读过[数据绑定概述(http://msdn.microsoft.com/en-us/library/ms752347.aspx)你可能本来能够把所有东西都弄出来...... – 2011-06-13 20:43:08
@HB我确实阅读了数据绑定概述以及其他许多MSDN文档页面。实际上,我是在“创建绑定”下的示例中使用我的代码,但它不起作用!他们的所有例子都使用了这个'Grid.Resources'或'DockPanel.Resources'等部分,这些部分只是为我搞定了一些东西。 – HighCommander4 2011-06-13 20:48:35
那么,只要输入一个资源的关键字而不用'StaticResourceExtension'或一个在两种情况下都使'Source'成为一个字符串的类名就是一个常见的错误。您可以通过这种方式在XAML中创建源代码,但不能使用该代码的绑定标记扩展名,而是使用实际的Binding对象,然后您可以使用XML元素语法指定源代码。 – 2011-06-13 20:51:35