这个似乎是基本的,不知何故它可以复制,但我在互联网上找到的答案没有一个让这件事对我有用..
我想将我的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#来说并不算太多。
提前致谢!!!
答案 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。您应该更改类以使用属性而不是字段。