0

这是一个日志项目,标题提供了项目的名称,消息记录了每个阶段。因此,每个标题都有许多消息。

为了提出问题,我正在简化我的对象。

我的 Log 类有 2 个属性。

List<LogDetails>
string Title

我的 LogDetails 类有 1 个属性:

string Message

我无法将消息绑定到我的 XAML。标题根据需要绑定。

我的xml代码:

<Window x:Class="BackUps.Logging.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:myData="clr-namespace:BackUps.Logging"
        Title="MainWindow"
        Height="350"
        Width="525">
  <Grid>
    <TreeView ItemsSource="{Binding}">
      <TreeView.ItemTemplate>
        <HierarchicalDataTemplate DataType="{x:Type myData:Log}"
                                  ItemsSource="{Binding LogDetailsList}">
          <TextBlock Text="{Binding Title}" />
          <HierarchicalDataTemplate.ItemTemplate>
            <DataTemplate DataType="{x:Type myData:LogDetails}">
              <StackPanel>
                <TextBlock Text="{Binding Message}" />
              </StackPanel>
            </DataTemplate>
          </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
      </TreeView.ItemTemplate>
    </TreeView>
  </Grid>

和我背后的代码

  public MainWindow(List<Log> logs)
    {
        InitializeComponent();
        this.DataContext = logs;
    }

我的结果是(您可以在其中看到丢失的条目):

在此处输入图像描述

这是 Auto 的窗口,它显示了我正在尝试绑定的对象。

在此处输入图像描述

我错过了什么或做错了什么?

4

1 回答 1

1

我过去遇到过类似的问题,并通过(完全)将 xaml 更改为以下形式来修复它:

<Grid>
  <TreeView ItemsSource="{Binding}">
    <TreeView.Resources>
      <HierarchicalDataTemplate DataType="{x:Type myData:Log}"
                                ItemsSource="{Binding LogDetailsList}">
        <TextBlock Text="{Binding Title}" />
      </HierarchicalDataTemplate>
      <HierarchicalDataTemplate DataType="{x:Type myData:LogDetails}>
                        <TextBlock Text="{Binding Message}" />
      </HierarchicalDataTemplate>
    </TreeView.Resources>
  </TreeView>
</Grid>
于 2013-01-22T12:27:51.217 回答