我有silverlight用户控件。这包含服务实体对象。见下文
public partial class MainPage : UserControl
{
public ServiceRef.tPage CurrentPage { get; set; }
...
}
我需要将CurrentPage.Title
绑定到TextBox
我的xaml在这里
<TextBox Text="{Binding Path=CurrentPage.Title, RelativeSource={RelativeSource self}}"></TextBox>
但这不起作用。
怎么做?
答案 0 :(得分:2)
为了实现这一目标,您必须在课堂上实施INotifyPropertyChanged
并在PropertyChanged
设置时CurrentPage
举起事件(这也意味着您不会能够使用自动属性;您必须使用自己的私有实例支持变量并自己编写get { }
和set { }
代码。
正在发生的事情是控件在设置CurrentPage
之前绑定到该值。因为您没有通知任何人该属性已更改,所以它不知道刷新绑定数据。实施INotifyPropertyChanged
将解决此问题。
或者您可以在设置器中自己手动设置Text
属性。
答案 1 :(得分:0)
将您的标记更改为
<TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window}, Path=CurrentPage.Title}" />
通过分配RelativeSource={RelativeSource self}
,您告诉TextBlock
绑定到自身,并在CurrentPage
本身而不是父TextBlock
上查找名为Window
的属性}。
答案 2 :(得分:0)
在XAML中设置UpdateSourceTrigger="PropertyChanged"
。