2011-12-18 15 views
0

が表示されませんこれをうまくデバッグする方法は本当に分かりません)。これは私のコードです:ツリービューは、私はこの例を再現しようとしているデータ

MainWindow.XAML

<Window x:Class="Tryout.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:Tryout.domain" 
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> 
<TreeView Name="treeViewFiles" HorizontalAlignment="Left" Margin="10,10,0,12" Width="200" ClipToBounds="True"> 
    <TreeView.Resources> 
     <HierarchicalDataTemplate DataType="{x:Type local:Directory}" ItemsSource="{Binding Children}"> 
      <Label Content="{Binding Path=Name}"/> 
     </HierarchicalDataTemplate> 
     <DataTemplate DataType ="{x:Type local:File}"> 
      <TextBlock Text="{Binding Path=Name}" /> 
     </DataTemplate> 
    </TreeView.Resources> 
</TreeView> 

MainWindow.XAML.cs

namespace Tryout 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void Window_Loaded(object sender, RoutedEventArgs e) 
     { 
      Directory rootDirectory = new Directory("Root"); 
      rootDirectory.Children.Add(new Directory("Subdirectory 1")); 
      rootDirectory.Children.Add(new Directory("Subdirectory 2")); 
      ((Directory)rootDirectory.Children[1]).Children.Add(new File("The only file")); 

      treeViewFiles.ItemsSource = rootDirectory.Children; 
     } 
    } 
} 

File.cs

namespace Tryout.domain 
{ 
    public class File : INotifyPropertyChanged 
    { 
     public string Name; 

     public File(String _name) 
     { 
      Name = _name; 
     } 

     #region INotifyPropertyChanged Members 

     public event PropertyChangedEventHandler PropertyChanged; 

     #endregion 
    } 
} 

Directory.cs

namespace Tryout.domain 
{ 
    public class Directory : File 
    { 
     public List<File> Children = new List<File>(); 

     public Directory(String _name) : base(_name) { } 
    } 
} 

答えて

1

クラスFileおよびDirectoryクラスは、プロパティではなくフィールドを通じてデータを公開し、フィールドにバインドすることはできません。パブリックフィールドNameChildrenをプロパティに変更すると、コードが機能します。

+0

はい、それは私の問題を解決しました。フィールドとプロパティの間に実際に違いがあるかどうかはわかりませんでした。 C#についてもう少し詳しくお読みください。 – ChristopherS

関連する問題