我创建了一个窗口,该窗口显示绑定到ListBox
(字符串列表)的ListOfPlayers
。
此窗口的目的是从ListOfPlayers
中选择球员来组队。
有时候,我想为红队选择球员,我有一个ListOfRedPlayers
(一个ObservableCollection<string>
属性)。
有时候,我想为蓝队选择球员,我有一个相应的ListOfBluePlayers
。
现在,在我的窗口构造函数中,我有一个bool isRedTeam
参数,并根据该参数填充ListOfRedPlayers
或ListOfBluePlayers
。
那行得通,但是很烂,因为它不能整洁地扩展到超过两个团队。我可以使用Enum(RedTeam,BlueTeam,GreenTeam等),但这似乎也不那么整齐。
我尝试通过引用传递相应的players属性列表,但是我不能这样做(不能通过引用传递属性)。
请注意,我确实使用了属性设置器(例如ListOfBluePlayers = new ObservableCollection<string>();
而不是ListOfBluePlayers.Clear()
),因此直接使用输入参数ListOfPlayers
是行不通的。
有没有一种整齐的方法可以做到这一点?
答案 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;
}
}