2009-01-12 14 views
0

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.

Répondre

0

Vous n'avez pas besoin de cibler le framework 3.5? Ou assurez-vous que SP2 de 3.0 est installé.

+0

http://msdn.microsoft.com/en-us/library/system.componentmodel.ieditablecollectionview.aspx dit que cette interface est supporté déjà dans 3.0 SP2 –

+0

3.5SP1 et 3.0SP2 je pense .. peut-être que vous manquez le service pack? –

0

Je pourrais créer une solution de compilation à partir de votre exemple.

L'erreur peut signifier une incompatibilité de version entre la cible de votre projet et les infrastructures installées ou similaires.

Un autre problème peut être une installation de cadre généralement arrosée sur votre PC. Essayez de reproduire l'erreur sur une installation propre.

0

Got est résolu ... Il y avait incompatibilité WindowsBase.dll ...