C# 将选定项绑定到动态设置列表

C# 将选定项绑定到动态设置列表,c#,wpf,C#,Wpf,我创建了一个窗口,显示一个绑定到ListOfPlayers(字符串列表)的ListBox 此窗口的目的是从ListOfPlayers中选择球员组建球队 有时候,我想为红队挑选球员,我有一个球员名单(一个属性) 有时,我想为蓝队选择球员,我有一个相应的蓝队球员列表 现在,在我的窗口构造函数中,我有一个bool isRedTeam参数,并且基于该参数,我填充了ListOfRedPlayers或ListOfBluePlayers 这是可行的,但它很糟糕,因为它不能整齐地扩展到两个团队之外。我可以使用E

我创建了一个窗口,显示一个绑定到
ListOfPlayers
(字符串列表)的
ListBox

此窗口的目的是从
ListOfPlayers
中选择球员组建球队

有时候,我想为红队挑选球员,我有一个球员名单(一个属性)

有时,我想为蓝队选择球员,我有一个相应的蓝队球员列表

现在,在我的窗口构造函数中,我有一个
bool isRedTeam
参数,并且基于该参数,我填充了
ListOfRedPlayers
ListOfBluePlayers

这是可行的,但它很糟糕,因为它不能整齐地扩展到两个团队之外。我可以使用Enum(RedTeam、BlueTeam、GreenTeam等),但这看起来并不那么整洁

我尝试通过引用传递相应的players属性列表,但我不能这样做(不能通过引用传递属性)

请注意,我确实使用了属性设置器(例如,
ListOfBluePlayers=newobserveCollection();
,而不仅仅是
ListOfBluePlayers.Clear()
),因此直接使用输入参数
ListOfPlayers
是行不通的


有没有一种简洁的方法可以做到这一点?

这对完成任务有帮助吗

bool isRedTeam = true; // true/false

ObservableCollection<string> ListOfRedPlayers { get; set; }
ObservableCollection<string> ListOfBluePlayers { get; set; }

public ObservableCollection<string> ListOfPlayers
{
    get
    {
        if(isRedTeam) return ListOfRedPlayers
        else return ListOfBluePlayers
    }
    set
    {
        if (isRedTeam) ListOfRedPlayers = value;
        else ListOfBluePlayers = value;
    }
}
bool isRedTeam=true;//对/错
ObservableCollection ListOfReplayers{get;set;}
BluePlayers{get;set;}的ObservableCollection列表
公共可观测收集层列表
{
得到
{
if(isRedTeam)返回还原层列表
否则返回蓝色玩家列表
}
设置
{
if(isRedTeam)listofReplayers=值;
else ListOfBluePlayers=值;
}
}

枚举就可以了。如果您希望它是无限可伸缩的,您可以为团队使用一个名称字符串,但是您的体系结构在这样做时还存在其他问题。您最好创建一个团队类,该类维护自己的参与者列表以及关于团队的元数据,如团队名称。然后你有一个列表需要维护,而不是为每支球队单独保存列表,球员可以保存对它所属球队的引用。嗨,接受josh的建议,我试着给你另一种方式。您可以创建一个observablecollection并直接绑定到它,并在Team类的属性“name”处设置displayedName属性。因此,您可以从团队名称中选择,选择整个团队类,可能使用团队1、团队2等。索引比颜色更容易使用。