绑定到类成员

时间:2012-11-29 07:53:03

标签: c# wpf data-binding

这个似乎是基本的,不知何故它可以复制,但我在互联网上找到的答案没有一个让这件事对我有用..

我想将我的UI(XAML)中的元素绑定到我所拥有的类的实例成员。 所以,让我们有一个简单的XAML

<Window x:Class="gUSBampReader.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="601" Width="857" xmlns:my="clr-namespace:binding;assembly=binding">

   <TextBlock Name="UITextBlock"/>  <!-- THIS IS THE TEXT BOX TO BE BINDED -->

</Window>

另一方面,我有一个班级

public class foo
{
    objectThatImplementsINotify a; //lets say that's equivalent to an string
}

public partial class mainWindow : Window
{
    public foo externalMembers;

    public mainWindow()
    {
       externalMembers = new foo();
       //Let's show externalMembers.a in UITextBlock!
    }
}

我想学习如何从XAML和C#进行绑定。因为有时外部成员在那里,我可以在开发时绑定,但其他时间是动态的,必须在执行时创建和绑定

最后..你能推荐一些关于dataBinding的好教程吗? XAML有很多东西(但我一直无法使它工作)。但对于C#来说并不算太多。

提前致谢!!!

2 个答案:

答案 0 :(得分:3)

您需要将窗口的DataContext设置为自身:

public mainWindow()
{
   externalMembers = new foo();
   DataContext = this;
   //Let's show externalMembers.a in UITextBlock!
}

然后你需要绑定文本块:

<TextBlock Name="UITextBlock" Text="{Binding externalMembers.a}"/>

要使其有效,您还需要将externalMembers.a更改为属性,而不是字段:

public class foo
{
    objectThatImplementsINotify a { get; set; }
}

答案 1 :(得分:1)

据我所知,绑定只适用于属性,而不适用于字段。有关其他详细信息,请参阅此处,包括如何在代码中创建绑定:http://msdn.microsoft.com/en-us/library/ms752300.aspx。您应该更改类以使用属性而不是字段。