我正在創建一個籃球WPF應用程序,它顯示一個HomeTeam
和一個AwayTeam
。 我已經創建了一個Player
對象,並在主窗口中爲家(HomePlayersList
)和客隊(AwayPlayersList
)創建了ObservableCollection
球員對象。我已經在玩家對象上使用了INotifyPropertyChanged
接口,所以當IsInGame
布爾值爲真時,玩家將被添加到兩個ObservableCollection<Player>
之一,具體取決於計數。 (如果列表中的一個ObservableCollection<Player> HomeTeam
或ObservableCollection<Player> AwayTeam
數爲5,那麼剩下的被添加到替代列表ObservableCollection<Team> HomeSub
或ObservableCollection<Team> AwaySub
。)如何區分對象類型c#
但我試圖區分玩家是否是在家裏還是客隊,並根據其玩家進入的列表中,玩家將被添加到主頁或者離開的新列表中。
public static ObservableCollection<Player> HomePlayersList;
public static ObservableCollection<Player> AwayPlayersList;
public static ObservableCollection<Player> HomeTeam = new ObservableCollection<Player>();
public static ObservableCollection<Player> AwayTeam = new ObservableCollection<Player>();
public static ObservableCollection<Player> HomeSub = new ObservableCollection<Player>();
public static ObservableCollection<Player> AwaySub = new ObservableCollection<Player>();
public static int HomeSubCount = 7;
public class Player: INotifyPropertyChanged
{
public static bool IsHome = true;
private static int TotalSelected = 1;
public string Id { get; set; } //player ID
public string FirstName { get; set; } //player first name
public string SecondName { get; set; } //player second name
public string KnownName { get; set; } //player known name
public string Position { get; set; } //player position
public string Number { get; set; } //player number
public bool isInGame;
public bool IsInGame
{
get { return isInGame; }
set
{
if (value != isInGame)
{
isInGame = value;
if (isInGame)
{
OnPropertyChanged("IsInGame", true);
}
else
{
OnPropertyChanged("IsInGame", false);
}
}
}
}
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, e);
}
protected void OnPropertyChanged(string propertyName, bool state)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
if (state)
{
if (TotalSelected > 5 + MainWindow.HomeSubCount)
{
this.IsInGame = false;
return;
}
if (MainWindow.HomeTeam.Count < 5)
MainWindow.HomeTeam.Add(this);
else
{
if (MainWindow.HomeSub.Count < MainWindow.HomeSubCount)
{
MainWindow.HomeSub.Add(this);
}
}
TotalSelected++;
}
else
{
if (SearchForMe(MainWindow.HomeTeam) != null)
{
MainWindow.HomeTeam.Remove(SearchForMe(MainWindow.HomeTeam));
TotalSelected--;
return;
}
if (SearchForMe(MainWindow.HomeSub) != null)
{
MainWindow.HomeSub.Remove(SearchForMe(MainWindow.HomeSub));
TotalSelected--;
return;
}
}
}
private Team SearchForMe(ObservableCollection<Team> OCT)
{
return OCT.Where(i => i.Number == this.Number).SingleOrDefault();
}
public event PropertyChangedEventHandler PropertyChanged;`enter code here`
}
這是通過引用傳遞的嗎? – Decoder94
是的,ObservableCollection <>是一個引用類型。所以你可以隨時參考玩家進入的容器/收藏。 – Rekshino
如何從CurrentIn訪問列表的原始名稱或知道它是主頁還是離開?爲了添加到新的主頁或離開可觀察列表? – Decoder94