2016-10-04 22 views
1

タイトルには、DataGrid内のDataGridを取得しようとしています。私のコードでは、Columnnamesは表示されません。ある時点で、私は最初のDataGridからDataを表示することができましたが、現在は何もありません。WPF Visual C#DataGridのDataGrid

XAML:

<Window x:Class="WpfDataGridSample.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="200" Width="400"> 
    <Grid Margin="10"> 
     <DataGrid Name="dgUsers" AutoGenerateColumns="False" ItemsSource="{Binding User}"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
       <DataGridTextColumn Header="Birthday" Binding="{Binding Birthday}" /> 
      </DataGrid.Columns> 
      <DataGrid.RowDetailsTemplate> 
       <DataTemplate> 
        <DataGrid Name="dgUserAddress" AutoGenerateColumns="False" ItemsSource="{Binding Address}"> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="Street" Binding="{Binding Street}" /> 
          <DataGridTextColumn Header="Number" Binding="{Binding Number}" /> 
         </DataGrid.Columns> 
        </DataGrid> 
       </DataTemplate> 
      </DataGrid.RowDetailsTemplate> 
     </DataGrid> 
    </Grid> 
</Window> 

XAML.CS:

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

      List<User> User = new List<User>(); 

      var user1 = new User() 
      { 
       Id = 1, 
       Name = "John Doe", 
       Birthday = new DateTime(1971,7,23) 
      }; 

      user1.Address.Add(new Address() 
      { 
       Street = "Teststreet1", 
       Number = 1 
      }); 

      user1.Address.Add(new Address() 
      { 
       Street = "Teststreet1", 
       Number = 11 
      }); 

      User.Add(user1); 

      var user2 = new User() 
      { 
       Id = 2, 
       Name = "Jane Doe", 
       Birthday = new DateTime(1974,1,17) 
      }; 

      user2.Address.Add(new Address() 
      { 
       Street = "Teststreet2", 
       Number = 2 
      }); 

      user2.Address.Add(new Address() 
      { 
       Street = "Teststreet2", 
       Number = 22 
      }); 

      User.Add(user2); 

      var user3 = new User() 
      { 
       Id = 3, 
       Name = "Sammy Doe", 
       Birthday = new DateTime(1991,9,2) 
      }; 

      user3.Address.Add(new Address() 
      { 
       Street = "Teststreet3", 
       Number = 3 
      }); 

      user3.Address.Add(new Address() 
      { 
       Street = "Teststreet3", 
       Number = 33 
      }); 

      User.Add(user3); 
     } 
    } 

    public class User 
    { 
     public int Id { get; set; } 

     public string Name { get; set; } 

     public DateTime Birthday { get; set; } 

     public List<Address> Address { get; set; } 

     public User() 
     { 
      Address = new List<Address>(); 
     } 
    } 

    public class Address 
    { 
     public string Street { get; set; } 
     public int Number { get; set; } 
    } 
} 

答えて

0

これを試してみてください:私は私のマシン上でテストしてみたし、それが正常に動作します

namespace WpfDataGridSample { 
public partial class MainWindow : Window { 

    public List<User> User { get; set; } 

    public MainWindow() { 
     InitializeComponent(); 

     User = new List<User>(); 

     var user1 = new User() { 
      Id = 1, 
      Name = "John Doe", 
      Birthday = new DateTime(1971, 7, 23) 
     }; 

     user1.Address.Add(new Address() { 
      Street = "Teststreet1", 
      Number = 1 
     }); 

     user1.Address.Add(new Address() { 
      Street = "Teststreet1", 
      Number = 11 
     }); 

     User.Add(user1); 

     var user2 = new User() { 
      Id = 2, 
      Name = "Jane Doe", 
      Birthday = new DateTime(1974, 1, 17) 
     }; 

     user2.Address.Add(new Address() { 
      Street = "Teststreet2", 
      Number = 2 
     }); 

     user2.Address.Add(new Address() { 
      Street = "Teststreet2", 
      Number = 22 
     }); 

     User.Add(user2); 

     var user3 = new User() { 
      Id = 3, 
      Name = "Sammy Doe", 
      Birthday = new DateTime(1991, 9, 2) 
     }; 

     user3.Address.Add(new Address() { 
      Street = "Teststreet3", 
      Number = 3 
     }); 

     user3.Address.Add(new Address() { 
      Street = "Teststreet3", 
      Number = 33 
     }); 

     User.Add(user3); 

     this.DataContext = this; 
    }  
} 

public class User { 
    public int Id { get; set; } 

    public string Name { get; set; } 

    public DateTime Birthday { get; set; } 

    public List<Address> Address { get; set; } 

    public User() { 
     Address = new List<Address>(); 
    } 
} 

public class Address { 
    public string Street { get; set; } 
    public int Number { get; set; } 
} 
} 

...

+0

私が試したように、それはエラーを投げただけでコンパイルすることはできませんでした:/ –

+0

エラーを投稿できますか? – Michelle

+0

まあ、115のエラーがあります:S 'InitializeComponent(); 公開リストユーザー{get;セット; } するvar USER1 =新しいユーザー(){ ID = 1、 NAME = "ジョン・ドウ"、 誕生日は=新しい日時(1971,7,23) }; 'uは次のようmeaned? –

0
List<User> User = new ObservableCollection<User>(); 

DataContext = this; 

はデータコンテキストを設定し、コレクション内の変更についての情報を表示します。

+0

私は試しましたが、 'List 'は不可​​能ですので、ObservableCollection に変更しましたが、結果は変わりません –