Я реализовал UserControl и добавил элемент управления TreeView. Файл XAML выглядит следующим образом. Я использую HierarchicalDataTemplate для привязки данных с Treeview,
<UserControl x:Class="Trinity.Windows.Viewer.Alarm.AlarmPage.TrinityDeviceTree"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src ="clr-namespace:Trinity.Windows.Viewer.Alarm.AlarmPage"
Height="300" Width="300">
<UserControl.Resources>
<src:SiteList x:Key="SiteListKey"/>
<HierarchicalDataTemplate DataType="{x:Type src:Site}"
ItemsSource="{Binding Path=PartitionsList}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:Partition}"
ItemsSource="{Binding Path=MasterDeviceList}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type src:MasterDevice}"
ItemsSource="{Binding Path=SlaveDeviceList}">
<TextBlock Text="{Binding Path=Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type src:SlaveDevice}">
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</UserControl.Resources>
<Grid Width="auto" Height="auto">
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<TreeView Name="DeviceTree"/>
</Grid>
У меня есть классы данных, привязанные к TreeView следующим образом:
namespace Trinity.Windows.Viewer.Alarm.AlarmPage
{
public class Site
{
public Site(string name)
{
_name = name;
_partitions = new ObservableCollection<Partition>();
}
string _name;
public string Name { get { return _name; } }
ObservableCollection<Partition> _partitions;
public List<Partition> PartitionsList { get { return _partitions; } }
}
public class Partition
{
public Partition(string name)
{
_name = name;
_masterdevice = new ObservableCollection<MasterDevice>();
}
string _name;
public string Name { get { return _name; } }
ObservableCollection<MasterDevice> _masterdevice;
public ObservableCollection<MasterDevice> MasterDeviceList { get { return _masterdevice; } }
}
public class MasterDevice
{
public MasterDevice(string name)
{
_name = name;
_slavedevice = new ObservableCollection<SlaveDevice>();
}
string _name;
public string Name { get { return _name; } }
ObservableCollection<SlaveDevice> _slavedevice;
public ObservableCollection<SlaveDevice> SlaveDeviceList { get { return _slavedevice; } }
}
public class SlaveDevice
{
public SlaveDevice(string name)
{
_name = name;
}
string _name;
public string Name { get { return _name; } }
}
public class SiteList : ObservableCollection<Site>
{
public Site this[string name]
{
get
{
foreach (Site objSite in this)
if (objSite.Name == name)
return objSite;
return null;
}
}
}
}
Но теперь, когда я компилирую этот код, я получаю следующую ошибку:
ошибка MC1000: неизвестная ошибка сборки,
«Не удалось загрузить тип
'System.ComponentModel.IEditableCollectionView'
из сборки WindowsBase,
Версия = 3.0.0.0, Культура = нейтральная,
PublicKeyToken = 31bf3856ad364e35. Линия
9 Позиция 87. ' в файле xaml.
Теперь, если я комментирую код, содержащий HierarchicalDataTemplate, в файле XAML, мои проекты компилируются без ошибок. Я не понимаю, почему я получаю выше ошибки компиляции.
Пожалуйста, помогите мне в этом.