這個問題與我之前的問題有關。在之前的問題中,由于@EldHasp的幫助,我能夠在DataGrid中顯示任意多的List<int>元素。
現在,我想在DataTable中做同樣的事情。
我已經試過了;但是,它只顯示System.Collections.Generic.List 1[System.In32]。
我確信我錯了,但我不知道如何解決這個問題。
雖然我認為AutoGenerateColumns="True"會自動解決這個問題,但它并沒有發生。
這里是我的代碼:
CatModel.cs (除了注釋外,與前面的相同)
using System;
using System.Collections.Generic;
namespace WpfApp1
{
public class CatModel {
{
public CatModel(int Num, String Name, List< int> Test_List)。
{
this.Num = Num;
this.Name = Name;
this.Test_List = Test_List;
}
public int Num { get; set; }
public String Name { get; set; }
public List<int> Test_List { get; set; }
}
MainWindow.xaml.cs
using System.Collections.Generic;
使用System.Windows.Data。
namespace WpfApp1
{
public partial class MainWindow : Window >。
{
public MainWindow()
{
InitializeComponent()。
DataTable result = new DataTable()。
result.Columns.Add("Num")。
result.Columns.Add("Name")。
for (int i = 0; i < 3; i )
{
result.Columns.Add("Test_" (i 1)。
}
result.Rows. Add(1, "AA", new List< int> { 1, 2, 3 })。)
result.Rows. Add(2, "BB", new List< int> { 4, 5, 6 })。)
result.Rows. Add(3, "CC", new List< int> { 7, 8, 9 })。)
DataContext = 結果。
}
}
}
MainWindow.xaml
<Window x:Class="WPFApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"/span>
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"。
mc:Ignorable="d"。
Title="List" Height="350" Width="750"
BorderThickness="1">
< Grid Width="700" Height="300">
< DataGrid IsReadOnly="True"/span> AutoGenerateColumns="True"/span> ItemsSource="{Binding}"/span> HorizontalAlignment="Left"/span> Margin="10, 10,10,10"/>
</Grid>
</Window>/span>
uj5u.com熱心網友回復:
一個可能實作的例子:
public DataTable Table { get; } = new DataTable() 。
public MainWindow()
{
List<CatModel> result = new List<CatModel>()。
結果。 Add(new CatModel(1, "AA", new List< int> { 1, 2, 3 });
結果。 Add(new CatModel(2, "BB", new List< int> { 4, 5, 6 });
結果。 Add(new CatModel(3, "CC", new List< int> { 7, 8, 9 });
Table.Columns.Add(new DataColumn(nameof(CatModel.Num), typeof(int) )。)
Table.Columns.Add(new DataColumn(nameof(CatModel.Name), typeof(string) )。
for (int i = 0; i < 3; i )
{
Table.Columns.Add(new DataColumn ($"{i}", typeof(int) )。)
}
foreach (var cat in result)
{
var row = Table.NewRow();
row[0] = cat.Num;
row[1] = cat.Name;
for (int i = 0; i < 3; i )
{
row[2 i] = cat.Test_List[i]。
}
Table.Rows.Add(row);
}
InitializeComponent();
}
<Window x:Class="WPFApp1.MainWindow">
x:Name="mainWindow"。
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"。
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"。
mc:Ignorable="d"。
Title="List" Height="350" Width="750"
BorderThickness="1">
< Grid Width="700" Height="300">
< DataGrid IsReadOnly="True"/span> AutoGenerateColumns="True"/span>
ItemsSource="{Binding Table, ElementName=mainWindow}"
HorizontalAlignment="Left" Margin="10,10,10"/>
</Grid>
</Window>/span>
P.S.結果集合是多余的。 我留下它只是因為與問題中的代碼有聯系,這樣可以更清楚地看到表格單元格與原始資料的聯系。 最好是立即初始化表格,而不使用中間的集合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/312700.html
標籤:
上一篇:腳本停止改變數值
