我有一个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?
答案 0 :(得分:1)
DataContext
中的HeaderTemplate
是Header
,Header
是一个字符串,它没有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>