3

这似乎是基本的,并且可以以某种方式复制,但是我在互联网上找到的任何答案都没有使这件事对我有用..

我想将我的 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# 进行此绑定。因为有时外部成员在那里,我可以在开发时绑定,但其他时候是动态的,它必须在执行时创建和绑定

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

提前致谢 !!!

4

2 回答 2

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; }
}
于 2012-11-29T08:00:00.243 回答
1

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

于 2012-11-29T07:59:17.177 回答