J'ai implémenté un UserControl et j'ai placé un contrôle TreeView sur celui-ci. Le fichier XAML ressemble à ceci. J'utilise un HierarchicalDataTemplate pour la liaison de données avec le Treeview,Erreur de compilation de liaison HierarchicalDataTemplate et 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>
J'ai des classes de données liées à la TreeView comme suit:
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;
}
}
}
}
Mais maintenant, quand je compile ce code que je reçois erreur suivante:
error MC1000: Unknown build error, 'Could not load type 'System.ComponentModel.IEditableCollectionView' from assembly 'WindowsBase, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Line 9 Position 87.' in xaml file.
Maintenant, si je commente le code contenant Hierarchical DataTemplate dans le fichier XAML, mes projets compile sans erreur. Je ne comprends pas pourquoi je suis au-dessus de l'erreur de compilation.
S'il vous plaît aidez-moi à ce sujet.
http://msdn.microsoft.com/en-us/library/system.componentmodel.ieditablecollectionview.aspx dit que cette interface est supporté déjà dans 3.0 SP2 –
3.5SP1 et 3.0SP2 je pense .. peut-être que vous manquez le service pack? –