【问题标题】:WPF Data Binding - Data Template is not Getting ValuesWPF 数据绑定 - 数据模板未获取值
【发布时间】:2009-12-02 20:45:40
【问题描述】:

我有以下数据模板:

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

在我的&lt;Window.Resources&gt; 部分。它旨在显示 WorkItem 对象的 Id 和 Title(来自命名空间 Microsoft.TeamFoundation.WorkItemTracking.Client。)

我尝试将它放在 TabItem 中的 TabControl 中,它只显示静态文本。 (不显示 WorkItem 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 都很好)。

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

【问题讨论】:

  • 我是笨蛋!这就是我复制和粘贴代码所得到的!反正。感谢伟大的(和快速的答案)。因为他们都很好,所以我投了所有票,并给出了第一个的答案。
  • 确实是。很抱歉混淆(选择了错误的排序选项卡)。我已经改变了答案以反映这一点。感谢收看。

标签: wpf data-binding binding


【解决方案1】:

您正在绑定LabelTarget 属性,而您实际上想要绑定的是Content 属性:

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

此外,如果您不需要 Label 提供的额外功能,请考虑使用 TextBlock 而不是 Label

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

【讨论】:

    【解决方案2】:

    您正在绑定 Label.Target。 Target 是被标记的 UIElement。需要绑定Label.Content,或者改成TextBlock,绑定TextBlock.Text。

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

    【讨论】:

      【解决方案3】:

      我是 WPF 的新手,如果我不在基地,请原谅,但您不需要设置标签的 Content 属性,而不是 Target

      【讨论】:

        猜你喜欢
        • 2021-12-25
        • 2014-08-23
        • 1970-01-01
        • 2013-05-23
        • 2012-01-22
        • 1970-01-01
        • 1970-01-01
        • 2011-05-07
        • 1970-01-01
        相关资源
        最近更新 更多