Причина получения неверных результатов в том, что у вас есть одно свойство, ссылающееся на другое свойство, а второе свойство всегда возвращает определенное значение.
Этот блок кода, когда вызывается из другого места, будет возвращать результаты некоторой другой переменной с именем "Combined", которую вы определили ниже ...
public string CombinedTeams
{
get
{
return Combined;
}
...
}
private string Combined
{
get
{
return " " + HomeTeam + " " + HomeScore + " - " + AwayScore + " " + AwayTeam;
}
...
}
Все остальное является академическим, потому что вы, как правило, всегда получаете "" + + HomeTeam + "" + HomeScore + "-" + AwayScore + "" + AwayTeam.
Я подозреваю, что вы захотите реструктурировать свой код так, чтобы он был похож на этот
public class Teams : INotifyPropertyChanged
{
private string Combined; // Backing for CombinedTeams
public string CombinedTeams
{
get
{
return Combined;
}
set
{
// This only concatinates values; Combined will get longer each time.
Combined += value;
// ViewModels should always notify after the vale has changed
NotifyOfPropertyChange("CombinedTeams");
}
}
// Adds a new team, assuming HomeTeam, HomeScore, AwayScore, and AwayTeam have been initialized
public void AddTeam()
{
CombinedTeams = " " + HomeTeam + " " + HomeScore + " - " + AwayScore + " " + AwayTeam;
}
}
Конечно, есть лучшие способы сделать это, но я надеюсь, что это поможет вам начать.
Общее правило (все время нарушается кодом-ниндзя, что вполне нормально): свойство не должно выполнять никаких собственных вычислений, оно действительно позволяет публичному доступу к частным данным в классе.
Возможно, стоит прочитать пару статей о свойствах C #. Вот несколько советов, с которых можно начать: http://msdn.microsoft.com/en-us/library/x9fsa0sw(v=vs.80).aspx и http://msdn.microsoft.com/en-us/library/aa288470(v=vs.71).aspx и, конечно, некоторые Хорошие результаты поиска