【问题标题】:Newbie WPF Binding Question新手WPF绑定问题
【发布时间】:2011-11-08 05:01:14
【问题描述】:

花了一天的时间试图找到我问题的答案后,我终于要问这个问题了。 :)

阅读 MSDN 的手册页后,我发现我终于可以删除那些无聊的表单填充程序,并将每个字段(TextBox、CheckBox 等)连接到我选择的任何属性。

我有一个名为 ArticleItem 的类来处理这种情况下的所有数据。

VB 代码:

  Public ArtItem as New ArticleItem

  Private Sub LookUpArt()
    If txtArtNo.Text.Length > 0 then
      ArtItem.Load(txtArtNo.Text)
    End If
  End Sub

XAML:

<Page DataContext="{Binding RelativeSource={RelativeSource Self}}">

<!-- ... -->

<TextBox x:Name="txtDescr" Text="{Binding ArtItem, Path=Descr}" />

现在我填充列表框没有问题,但我的文本框中没有任何反应。
我错过了什么?

【问题讨论】:

    标签: wpf vb.net xaml data-binding textbox


    【解决方案1】:

    ArtItem 是一个字段,不能绑定到字段,只能绑定到公共属性。此外,如果它在初始化后发生更改,则需要implementINotifyPropertyChanged,否则绑定将不会更新。

    编辑:你的绑定也坏了,你设置了路径两次,应该是{Binding ArtItem.Descr}或者{Binding Path=ArtItem.Descr}一样,Descr还需要是公共属性,ArtItem 也需要实现接口。

    【讨论】:

    • @Jonas:我发现了另一个问题。
    • 好的,我再试一次。我的类现在实现了 INotifyPropertyChanged 接口,ArtiItem 已成为私有实例 (Private _ArtItem as New ArticleItem) 并创建了一个名为 ArtItem 的公共属性,该属性返回值。 Descr 属性还会在更改时引发 PropertyChanged 事件。 XAML 也更新为 Text="{Binding ArtItem.Descr}" 但文本框仍然为空...
    • 所以这两个类都实现了接口,并且您通过路径ArtItem.Descr 绑定到的两个属性都是公共的,并在设置器中引发相应的事件?如果是这样,这应该可以工作,因为ArtItem 是您页面上的一个属性,该属性已在 DataContext 中设置,并且 DataContext 正在被继承到 TextBox。可能还有其他我现在想不到的要求。如果失败,请尝试debug the binding 并发布完整代码。
    • 现在可以用了吗?如果是这样,那就太好了! (在这种情况下你可以accept我的回答)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多