微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

帮助进行WPF数据绑定

如何解决帮助进行WPF数据绑定

| 我是WPF的新手,我想弄清楚数据绑定的工作原理,但是运气不佳。 我试图从简单的事情开始-将文本框的内容绑定到程序中的字符串变量。 我阅读了许多有关数据绑定,XML名称空间,标记扩展,资源,依赖项属性以及诸如此类的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; }
    }
}
我希望程序启动时文本框显示\“ hello \”,但它为空。 有人可以告诉我我在做什么错吗?     

解决方法

        您需要指定来源。要么: 给窗口命名,例如Name = \“ mywin \”,更改与ElementName = \“ myWin \”的绑定 或将窗口DataContext设置为: DataContext = \“ {Binding ElementName = \” myWin \“}-如果您不想让我未经测试就发布的名称,也可以使用RelativeSource-绑定也需要测试,如您所知: ) 这可能会有所帮助: http://blogs.msdn.com/b/wpfsdk/archive/2006/10/19/wpf-basic-data-binding-faq.aspx     ,        您需要将Window的ѭ2设置为其自身。
public MainWindow()
{
    InitializeComponent();
    this.DataContext = this;
    MyFoo = new Foo { Bar = \"hello\" };
}
这告诉WPF在类中查找绑定。 每个控件都可以设置一个
DataContext
,它表示“当我绑定时,我想绑定到该特定实例上的属性...这是继承的,因此,如果将
MainWindow
DataContext
设置为它自己,则
MainWindow
内的所有控件都会绑定到ѭ6上的属性。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。