[英]WPF Visual C# DataGrid in a DataGrid
正如標題所說,我嘗試在DataGrid中獲取DataGrid。 使用我的代碼,只有Columnnames出現。 在某些時候,我可以顯示來自第一個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; }
}
}
嘗試這個:
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; }
}
}
我在我的機器上測試過,它工作正常......
List<User> User = new ObservableCollection<User>();
DataContext = this;
將設置數據上下文,並通知視圖有關集合中的更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.