【问题标题】:ObservableCollection - binding to HierarchicalDataTemplate shows typeObservableCollection - 绑定到 HierarchicalDataTemplate 显示类型
【发布时间】:2012-12-08 09:08:15
【问题描述】:

我正在尝试创建一个具有分层“感觉”的简单日志记录系统。我希望这个屏幕截图清楚地解释了我的对象:

如您所见,我创建了一个 LogDetails 类型的新对象,它只公开了 4 个字段:

public string Message;
        public LogStatus Status;
        public string ErrorDetails;

        public enum LogStatus
        {
            Complete, Failed, Error, FatalError, Progress, Started
        }

我有另一个类,它有一个 Title 属性(字符串)和一个 LogDetails 属性。

当我绑定到 XAML 时,我的树视图显示如下:

如您所见,根目录很好并且是预期的/期望的(红色),但每个子类别都没有分解 - 我希望能够绕过一个级别并直接进入错误详细信息、消息和状态。所以,我想创建这个(在 Word 中模拟,但希望你明白):

这是我的 xaml:

<Grid>
<TreeView ItemsSource="{Binding}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding LogDetailsList}" >
            <TextBlock Text="{Binding Title}" />
            <HierarchicalDataTemplate.ItemTemplate>

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

            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>            
    </TreeView.ItemTemplate>
</TreeView>
</Grid>

后面还有我的 MainWindow 代码

public partial class MainWindow : Window
    {
        static public ObservableCollection<Log> logList;

        public MainWindow(List<Log> logs)
        {
            InitializeComponent();

            logList = new ObservableCollection<Log>();

            foreach (var item in logs)
            {
                logList.Add(item);    
            }

            this.DataContext = logList;
        }
    }

谁能指出我正确的方向,或者至少让我知道我的设计是否有缺陷?

编辑
当我尝试添加另一个文本块或 ItemTEmplate 时,我收到错误消息“属性 ItemTemplate 已设置多次”或“属性 VisualTree 已设置多次”

【问题讨论】:

    标签: c# binding treeview


    【解决方案1】:

    您应该提供绑定表达式的路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 2011-10-17
      • 2013-01-02
      • 2016-04-25
      • 2011-04-10
      相关资源
      最近更新 更多