我正在尝试在 DataGridTemplateColumn 内创建组合框,但它应该包含不同的值,具体取决于行。这是我的代码:
<dg:DataGridTemplateColumn x:Name ="NameColumn" Header="Player Name">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox
SelectedValue="0"
DisplayMemberPath="FullName"
SelectedValuePath="Id"
ItemsSource="{Binding AllPlayers, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
每次调用后,AllPlayers 都会返回不同的列表。
public List<Player> AllPlayers
{
get
{
counter = counter + 1;
Debug.Print("getting all players " + counter);
List<Player> lst = new List<Player>();
for (int i=0; i < 5; i++)
{
Player p = new Player();
p.Id = counter + i;
p.FullName = "Name " + counter + i;
lst.Add(p);
}
return lst;
}
}
出于某种原因,前 39 行调用了 AllPlayers 函数,然后从先前创建的列表中获取数据。我可以从调试信息中看到(它在 39 次调用后停止打印)。而且组合框中的列表也不是唯一的。我不明白这种行为背后的逻辑。我需要为每一行调用 AllPlayers。