2009-12-02 44 views
0

我有以下的DataTemplate:WPF数据绑定 - 数据模板没有得到价值

<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和标题(来自命名空间Microsoft.TeamFoundation.WorkItemTracking.Client。)

我试图把它放在TabItemTabControl中,它只显示静态文本。 (工作项ID和标题不显示,但在我的模板静态文本一样。)

显然模板被解雇,但结合不工作,我似乎无法明白为什么。

这里是我的C#调用它:

private void PickWorkItem_Click(object sender, RoutedEventArgs e) 
    { 
     int Id = int.Parse(((Button) e.OriginalSource).Tag.ToString()); 

     _mediator.PickedWorkItem = GetWorkItemInQueryResultListByID(Id); 
     tabAddLinks.DataContext = _mediator.PickedWorkItem; 
     tabAddLinks.Content = _mediator.PickedWorkItem; 

    }   

我的DataContext试过进出和它的工作原理是相同的。当我调试时,_mediator.PickedWorkItem的值设置正确(Id和Title都很好)。

关于如何解决此问题的任何想法,将不胜感激。

+0

我笨!这就是我得到的复制和粘贴代码!无论如何。感谢伟大的(和快速答案)。当他们没事的时候,我提出了所有的建议,并给出了第一个答案。 – Vaccano

+0

其实,我是第一个;) –

+0

事实上你。对不起,混淆了(选择了错误的排序标签)。我改变了答案来反映这一点。感谢您的支持。 – Vaccano

回答

2

你绑定LabelTarget属性,当你真正想成为结合它的Content属性:

<Label Content="{Binding Id}"/> 

此外,可以考虑使用TextBlock代替Label的,如果你不需要额外的功能一个Label规定:

<TextBlock Text="{Binding Id}"/> 
1

我很新的WPF,所以原谅我,如果我走了基地,但并不需要设置Content标签的属性,而不是Target

2

您具有约束力Label.Target。目标是被标记的UIElement。您需要绑定Label.Content,或将其更改为TextBlock并绑定TextBlock.Text。

(我的猜测是,你试图绑定一个不存在的Label.Text性能和智能有益选择目标,而不是你......!)