【问题标题】:Set text of datatemplate?设置数据模板的文本?
【发布时间】:2012-01-31 12:09:08
【问题描述】:

抱歉,我是 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);

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

【问题讨论】:

    标签: c# wpf xaml datatemplate


    【解决方案1】:

    HeaderTemplate 中的DataContextHeaderHeader 是一个字符串,它没有Name 属性(它应该在哪里?)。

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

    您可能还想阅读debugging data bindings,它会有所帮助。

    【讨论】:

      【解决方案2】:

      试试这个。你应该检查你的输出窗口是否有绑定错误,因为你的例子会发生这种情况

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

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 2016-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-26
        相关资源
        最近更新 更多