我在Window
(ArtistInfo
)中有以下Xaml:
<Grid>
<TextBlock Text="{Binding Artist.Name}"></TextBlock>
</Grid>
这是同一个窗口的代码隐藏(代码为了问题而简化):
public static readonly DependencyProperty ArtistProperty =
DependencyProperty.Register("Artist", typeof(Artist), typeof(ArtistInfo));
Artist Artist {
get {
return (Artist)GetValue(ArtistProperty);
}
set {
SetValue(ArtistProperty, value);
}
}
public ArtistInfo() {
InitializeComponent();
}
public ArtistInfo(int artistID) {
InitializeComponent();
Artist = GetArtist(artistID);
}
基本上我要做的是将数据绑定到依赖属性,这样当填充Artist
时(在构造函数中),TextBlock
将填充艺术家的名字。
我在这里缺少什么?
答案 0 :(得分:5)
我唯一没看到的是你更新了TextBlock的Binding源。首先为TextBlock添加名称
<TextBlock Name="m_tb" ... />
然后更新构造函数中的DataContext值
public ArtistInfo() {
...
m_tb.DataContext = this;
}
编辑 OP提到可能有多个TextBlock或子元素。
在这种情况下,我会针对所有值的最近父对象执行上述技巧。在这种情况下,网格控件。 DataContext属性将被所有内部子节点继承。
答案 1 :(得分:4)
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}" ...>
<Grid>
<TextBlock Text="{Binding Artist.Name}"/>
</Grid>
</Window>