我遇到绑定问题。我想将列表项绑定到datagrid列。 datagrid中的一行表示一个项目列表。每个项目都在一列中。例如,索引为0的列表中的所有项都在索引为0的列中。
我的数据网格:
<DataGrid Name="AttacksForGroupsDG"
CanUserAddRows="False"
CanUserDeleteRows="True"
AutoGenerateColumns="False"
DockPanel.Dock="Top"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Height="250">
<DataGrid.Columns>
<DataGridTextColumn Header="Jméno vesnice" Binding="{Binding Name}" Width="120"/>
<DataGridTextColumn Header="Souřadnice" Binding="{Binding Coords}" Width="70"/>
</DataGrid.Columns>
</DataGrid>
接下来,我有一个我绑定到的项目列表。此列表中的每个项目都代表我的数据网格中的一行。
public abstract class Group<T>
where T : Village
{
public ObservableCollection<T> Villages { get; private set; }
// the rest of the code I deleted for a clarity
}
最后,我绑定到这个类。属性名称和Coords我从类Village继承。
public sealed class Def : Village
{
public List<int> Attacks { get; set; }
public Def()
: base()
{
Attacks = new List<int>();
}
}
因此,datagrid中的第一列将使用Name属性。第二列将使用Coords属性。我根据列Def中列表中的项目数在代码中动态创建的下一列。
我不知道如何将该列表中的项目绑定到各个列。
我感谢任何建议。
答案 0 :(得分:0)
将ItemSource属性添加到DataGrid标记,并在您的Villages列表中添加一个绑定:
<DataGrid Name="AttacksForGroupsDG"
CanUserAddRows="False"
CanUserDeleteRows="True"
AutoGenerateColumns="False"
DockPanel.Dock="Top"
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
Height="250"
ItemsSource="{Binding Villages}">
<DataGrid.Columns>
<DataGridTextColumn Header="Jméno vesnice" Binding="{Binding Name}" Width="120"/>
<DataGridTextColumn Header="Souřadnice" Binding="{Binding Coords}" Width="70"/>
</DataGrid.Columns>
</DataGrid>