我已经实现了一个 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:未知的构建错误,“无法从程序集“WindowsBase,版本=3.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”加载类型“System.ComponentModel.IEditableCollectionView”。第 9 行位置 87。在 xaml 文件中。
现在,如果我在 XAML 文件中注释包含 HierarchicalDataTemplate 的代码,我的项目编译时不会出错。我不明白为什么我会遇到编译错误。
请帮助我。