WPF数据绑定 - 数据模板不是获取值

时间:2009-12-02 20:45:41

标签: wpf data-binding binding

我有以下DataTemplate:

<DataTemplate DataType="{x:Type Client:WorkItem}">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="200" />
        </Grid.ColumnDefinitions>
        <Label Name="lblIDText" Margin="2">WI ID:</Label>
        <Label Name="lblID" Margin="2" Grid.Column="1" 
               Target="{Binding Id}"></Label>

        <Label Name="lblTitleText" Grid.Row="1" Margin="2">WI Title:</Label>
        <Label Name="lblTitle" Margin="2" Grid.Row="2" Grid.ColumnSpan="2" 
               Target="{Binding Title}"></Label>

    </Grid>
</DataTemplate>

在我的<Window.Resources>部分。它旨在显示WorkItem对象的Id和Title(来自名称空间Microsoft.TeamFoundation.WorkItemTracking.Client。)

我尝试将其放在TabItem的{​​{1}}中,它只显示静态文本。 (WorkItem ID和标题不显示,但模板中的静态文本显示。)

显然模板正在被解雇,但绑定无效,我似乎无法理解为什么。

这是我的C#调用它:

TabControl

我使用DataContext进行了尝试,它的工作方式相同。当我调试时,_mediator.PickedWorkItem的值设置正确(Id和Title都很好)。

任何关于如何解决这个问题的想法都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

当您确实要绑定Label属性时,您绑定了Target的{​​{1}}属性:

Content

此外,如果您不需要<Label Content="{Binding Id}"/> 提供的额外功能,请考虑使用TextBlock而不是Label

Label

答案 1 :(得分:2)

您正在绑定Label.Target。目标是被标记的UIElement。您需要绑定Label.Content,或将其更改为TextBlock并绑定TextBlock.Text。

(我的猜测是你试图绑定一个不存在的Label.Text属性,而Intellisense帮助你选择Target而不是......!)

答案 2 :(得分:1)

我对WPF很新,所以请原谅我,如果我不在基础,但你不需要设置标签的Content属性,而不是Target