WPF:关于依赖属性的基本问题

时间:2009-04-25 15:06:47

标签: c# wpf data-binding xaml dependency-properties

我在WindowArtistInfo)中有以下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将填充艺术家的名字。

我在这里缺少什么?

2 个答案:

答案 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>