我想在DataGrid中水平地顯示List<int>中的每個元素。
我的資料看起來是這樣的:
result. 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 })。)
List<int>的元素應該被分成三個部分,每個元素應該被水平地顯示在DataGrid單元格中:
1 AA 1 2 3
2 BB 4 5 6
3 CC 7 8 9
現在它只顯示(Collection)。
我想我需要在XAML上下功夫,但我找不到任何例子。
這個問題與我的問題相似,但解決方案與我的要求不同。 我更希望將這一列分成三部分,并將每一部分分配給一個單元格。
巧合的是,我想將這一列分成三部分,并將其分配給一個單元格。
巧合的是,引入List<int>的目的是為了顯示任意數量的元素。你可以假設所有的行都有完全相同的長度,例如,如果第一行有7個元素,所有其他的行(這次是第二行和第三行)也有7個元素。
下面是我的代碼:
CatModel.csusing System;
using System.Collections.Generic;
namespace WpfApp1
{
public class CatModel {
{
//public CatModel(int Num, String Name, int Test_0001, int Test_0002, int Test_0003)
public CatModel(int Num, String Name, List< int> Test_List)。
{
this.Num = Num;
this.Name = Name;
//this.Test_0001 = Test_0001;。
//this.Test_0002 = Test_0002;。
//this.Test_0003 = Test_0003;
this.Test_List = Test_List;
}
public int Num { get; set; }
public String Name { get; set; }
//public int Test_0001 { get; set; }.
//public int Test_0002 { get; set; }
//public int Test_0003 { get; set; }
public List<int> Test_List { get; set; }
}
MainWindow.xaml.cs
using System.Collections.Generic;
using System.Windows.Generic;;;;;;;;;。
namespace WpfApp1
{
public partial class MainWindow : Window >。
{
public MainWindow()
{
InitializeComponent()。
List<CatModel> result = new List<CatModel>()。
//result.Add(new CatModel(1, "AA", 1, 2, 3));/span>
//result.Add(new CatModel(2, "BB", 4, 5, 6));
//result.Add(new CatModel(3, "CC", 7, 8, 9));.
結果。 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 });
this.dataGrid.ItemsSource = result;
}
}
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 AutoGenerateColumns="False"/span> Name="dataGrid" HorizontalAlignment="Left"/span> Margin="10, 10,10,10">
<DataGrid.Columns>
< DataGridTextColumn Binding="{Binding Num}" ClipboardContentBinding="{x: Null}" Header="Num"/span> IsReadOnly="True" Width="50" />
< DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x: Null}" Header="Name"/span> IsReadOnly="True" Width="100" />
< DataGridTextColumn Binding="{Binding Test_0001}" ClipboardContentBinding="{x: Null}"/span> Header="Test_0001"/span> IsReadOnly="True" Width="*"/>
< DataGridTextColumn Binding="{Binding Test_0002}" ClipboardContentBinding="{x: Null}" Header="Test_0002" IsReadOnly="True" Width="*"/>
< DataGridTextColumn Binding="{Binding Test_0003}" ClipboardContentBinding="{x: Null}" Header="Test_0003" IsReadOnly="True" Width="*"/>
< DataGridTextColumn Binding="{Binding Test_List}" ClipboardContentBinding="{x。 Null}" Header="Test_List" IsReadOnly="True" Width="*"/span>/>
</DataGrid.Columns>
</DataGrid>/span>
</Grid>/span>
</Window>/span>
uj5u.com熱心網友回復:
如果由于某種原因,你不能使用DataTable(正如你在評論中寫的那樣),那么你將不得不使用編程方式(在代碼后面)來創建列。
public MainWindow()
{
InitializeComponent()。
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 })。)
dataGrid.Columns.Clear()。
dataGrid.AutoGenerateColumns = false;
dataGrid.Columns.Add(new DataGridTextColumn() { Header = nameof(CatModel. Num), Binding = new Binding(nameof(CatModel.Num)) });
dataGrid.Columns.Add(new DataGridTextColumn() { Header = nameof(CatModel. Name), Binding = new Binding(nameof(CatModel.Name)) });
for (int i = 0; i < 3; i )
{
string path = $"{nameof(CatModel.List)}[{i}] "。
dataGrid.Columns.Add(new DataGridTextColumn() { Header = path, Binding = new Binding(path) })。
}
dataGrid.ItemsSource = result;
}
public class CatModel
{
public CatModel(int num, string name, List< int> list)。
{
Num = num;
Name = 名稱。
串列 = 串列。
}
public int Num { get; }
public string Name { get; }
public List<int> List { get; }
}
還要記住,如果你能改變 "CatModel.List "集合(添加/洗掉/插入/替換其中的元素),那么它應該被替換成ObservableCollection。 否則,集合項的新值將不會被顯示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312702.html
標籤:
