我正在尝试创建一个具有分层“感觉”的简单日志记录系统。我希望这个屏幕截图清楚地解释了我的目标:
正如您所看到的,我创建了一个LogDetails类型的新对象,它只公开了4个字段:
public string Message;
public LogStatus Status;
public string ErrorDetails;
public enum LogStatus
{
Complete, Failed, Error, FatalError, Progress, Started
}
我有另一个具有Title属性(字符串)和LogDetails属性的类。
当我绑定到XAML时,我的树视图显示了这个:
正如您所看到的,根目录很好,期望/期望(红色),但每个子类别都没有细分 - 我希望能够绕过一个级别并直接转到ErrorDetails,Message和Status。所以,我想创建这个(在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被设置多次”
答案 0 :(得分:1)
您应该提供绑定表达式的路径。