gpt4 book ai didi

c# - 将项目列表绑定(bind)到 Datagrid 单元格

转载 作者:行者123 更新时间:2023-12-05 00:13:27 24 4
gpt4 key购买 nike

我在 WPF 中有一个 DataGrid,它应该显示书籍的集合。
书是这样的:

public class Book
{
public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

private string title = "";
public string Title
{
get
{
return title;
}
set
{
title = value;
OnPropertyChanged("Title");
}
}

private List<Writer> writers = new List<Writer>();
public List<Writer> Writers
{
get
{
return writers;
}
set
{
writers = value;
OnPropertyChanged("Writers");
}
}

public Book() { }
public Book(string bookTitle)
{
this.Title = bookTitle;
}
}

这是作家类:
    public class Writer
{
public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}

private string fullname = "";
public string Fullname
{
get
{
return fullname;
}
set
{
fullname = value;
OnPropertyChanged("Fullname");
}
}

private string forename = "";
public string Forename
{
get
{
return forename;
}
set
{
forename = value;
OnPropertyChanged("Forename");
}
}

private string surename = "";
public string Surename
{
get
{
return surename;
}
set
{
surename = value;
OnPropertyChanged("Surename");
}
}

public Writer() { }
public Writer(string writersForename, string writersSurename)
{
this.Forename = writersForename;
this.Surename = writersSurename;
this.Fullname = string.Format("{0} {1}", this.Forename, this.Surename);
}
}

现在我想在 DataGrid 的单个单元格中显示作者。像这样的东西:
Title      |     Writer
------------------------
Book1 | Writer1
| Writer2
------------------------
Book2 Writer1
...

但如果我试图将列表绑定(bind)到单元格,它只会在单元格中显示“集合”作为值。

这是我正在使用的 XAML:
<ToolKit:DataGrid x:Name="dataGrid1" DataContext="{StaticResource ItemCollectionViewSource}" IsReadOnly="True" ItemsSource="{Binding}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" AutoGenerateColumns="False" >
<ToolKit:DataGrid.Columns>
<ToolKit:DataGridTextColumn Header="Title" Binding="{Binding Path=Title}" />
<ToolKit:DataGridTextColumn Header="Writer" Binding="{Binding Path=Writers}" />
</ToolKit:DataGrid.Columns>
</ToolKit:DataGrid>

我已经尝试将单元格绑定(bind)到“Writers.Fullname”,但这也不起作用。
你能帮帮我吗,我找不到这种绑定(bind)的任何例子。

问候

教学大纲

最佳答案

您可以创建 DataGridTemplateColumn ItemsControl 的列这将绑定(bind)到 Writers列表:

<ToolKit:DataGridTemplateColumn Header="Writer">
<ToolKit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Writers}" DisplayMemberPath="Fullname"/>
</DataTemplate>
</ToolKit:DataGridTemplateColumn.CellTemplate>
</ToolKit:DataGridTemplateColumn>

关于c# - 将项目列表绑定(bind)到 Datagrid 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23561374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com