将所选项目绑定到动态设置列表

时间:2019-08-01 19:47:42

标签: c# wpf

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

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

有时候,我想为红队选择球员,我有一个ListOfRedPlayers(一个ObservableCollection<string>属性)。

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

现在,在我的窗口构造函数中,我有一个bool isRedTeam参数,并根据该参数填充ListOfRedPlayersListOfBluePlayers

那行得通,但是很烂,因为它不能整洁地扩展到超过两个团队。我可以使用Enum(RedTeam,BlueTeam,GreenTeam等),但这似乎也不那么整齐。

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

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

有没有一种整齐的方法可以做到这一点?

1 个答案:

答案 0 :(得分:4)

此任务有帮助吗?

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;
    }
}