设置datatemplate的文本?

时间:2012-01-31 12:09:08

标签: c# wpf xaml datatemplate

抱歉,我是WPF的新手,我认为这很简单,但我现在还不知道。

我有一个DataTemplate我想用作TreeViewItem-Header(我已经从其他地方复制了模板,所以我不确定它在TextBlock部分的作用):

<Window.Resources>
    <DataTemplate x:Key="WI_Bug">
        <DockPanel>
            <Image Source="images\bug-icon.png" Height="16" Width="16"/>
            <TextBlock Text ="{Binding Path=Name}"/>
        </DockPanel>
    </DataTemplate>
</Window.Resources>

现在我用C#代码创建一个新项目:

TreeViewItem tvi = new TreeViewItem();
tvi.HeaderTemplate = (DataTemplate) this.Resources["WI_Bug"];
tvi.Header = "I am a bug";
treeView1.Items.Add(tvi);

我的问题:显示我在datatemplate中设置的图标,但标题文本本身不再出现。 如何从C#代码中的DataTemplate填充TextBlock?

2 个答案:

答案 0 :(得分:1)

DataContext中的HeaderTemplateHeaderHeader是一个字符串,它没有Name属性(应该在哪里)无论如何?)。

如果你有一个字符串,你想直接绑定到DataContext{Binding}

您也可以阅读debugging data bindings,这会有所帮助。

答案 1 :(得分:0)

试试这个。并且您应该检查输出窗口是否存在绑定错误,因为这会发生在您的示例中

<Window.Resources>
 <DataTemplate x:Key="WI_Bug">
    <DockPanel>
        <Image Source="images\bug-icon.png" Height="16" Width="16"/>
        <TextBlock Text ="{Binding Path=.}"/>
    </DockPanel>
 </DataTemplate>
</Window.Resources>