0

Window我在( )中有以下 Xaml ArtistInfo

<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填充艺术家的名字。

我在这里想念什么?

4

2 回答 2

5

我唯一没有看到的是您更新了 TextBlock 的绑定源。首先给TextBlock添加一个名字

<TextBlock Name="m_tb" ... />

然后更新构造函数中的DataContext值

public ArtistInfo() {
 ...
 m_tb.DataContext = this;
}

EDIT OP 提到可能有多个 TextBlock 或子元素。

在这种情况下,我会为最接近所有值的父对象执行上述技巧。在本例中为 Grid 控件。可以说,所有内部子项都将继承 DataContext 属性。

于 2009-04-25T15:08:43.770 回答
4
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}" ...>
    <Grid>
        <TextBlock Text="{Binding Artist.Name}"/>
    </Grid>
</Window>
于 2009-04-25T15:15:31.773 回答