2016-10-04 4 views
1

제목에서 알 수 있듯이 DataGrid 내부에 DataGrid를 가져 오려고합니다. 내 코드를 사용하면 Columnnames가 표시되지 않습니다. 어떤 시점에서 첫 번째 DataGrid의 데이터를 표시 할 수 있지만 지금은 아무 것도 아닙니다.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에 사용자 1 = 새 사용자() { 아이디 = 1, = "홍길동"은, 생일 = 새로운 날짜 시간 (1971,7,23) 가} 이름,'u는 다음과 같이 meaned? –

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

DataContext = this; 

은 데이터 컨텍스트를 설정하고 컬렉션의 변경 사항에 대해 알립니다.

+0

시도했지만'List '이 가능하지 않으므로 ObservableCollection 으로 변경했지만 결과는 여전히 동일합니다. –