我需要使用 ObservableCollection 并且只有一个类。这是我的代码。出于某种原因,我无法让 TreeView 填充 Observable Collection 。任何帮助,将不胜感激。
XAML:
<UserControl x:Class="ValidationWPF.ValidationUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:local="clr-namespace:ValidationWPF.DataSources"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<local:ValidationItem x:Key="ValidationMessages" />
<DataTemplate x:Key="Messages">
<TextBlock Text="{Binding Messages}" />
</DataTemplate>
<HierarchicalDataTemplate x:Key="SubItem" ItemTemplate="{StaticResource Messages}" ItemsSource="{Binding Messages}" >
<TextBlock Text="{Binding subItem}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate ItemTemplate="{StaticResource SubItem}" x:Key="ItemTemplate"
ItemsSource="{Binding subItem}">
<TextBlock Text="{Binding item}" FontWeight="Bold" />
</HierarchicalDataTemplate>
</UserControl.Resources>
<Grid>
<telerik:RadTreeView ItemsSource="{Binding Source={StaticResource ValidationMessages}}"
ItemTemplate="{StaticResource ItemTemplate}" x:Name="RadTreeView"/>
</Grid>
</UserControl>
班级:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
namespace ValidationWPF.DataSources
{
class ValidationItem : ObservableCollection<ValidationItem>
{
public ValidationItem()
{
}
public ValidationItem(Item item, SubItem subItem, string Messages)
{
this.item = item;
this.subItem = subItem;
this.Message = Messages;
}
public string Message { get; set; }
public SubItem subItem { get; set; }
public Item item { get; set; }
public ObservableCollection<ValidationItem> ValidationItems
{
get
{
Add(new ValidationItem(Item.Customer, SubItem.Name, "Customer Name Cannot be Null"));
Add(new ValidationItem(Item.Customer, SubItem.Phone, "Phone number cannot be Null"));
Add(new ValidationItem(Item.Customer, SubItem.Phone, "Phone number must be in the format (###)###-####"));
Add(new ValidationItem(Item.Customer, SubItem.Address, "Customer Address cannot be Null"));
return ValidationItems;
}
}
}
public enum Item
{
Customer
}
public enum SubItem
{
Address,
Phone,
Name
}
}