У меня есть путаница относительно того, почему я не могу добавлять предметы за пределами класса к общественному ObservableCollection
.Почему ObservableCollection <string> свойство, возвращающее null?
Так позволяет сказать, что у меня есть класс следующим образом:
public class TestClass
{
ObservableCollection<ViewModel> test;
public TestClass()
{
test = CreateDS();
}
protected ObservableCollection<ViewModel> CreateDataSource()
{
ObservableCollection<ViewModel> vm = new ObservableCollection<ViewModel>();
return vm;
}
public ObservableCollection<ViewModel> Data {get {return test; } }
public ObservableCollection<String> hosts {get; set;}
// also tried this way instead
public ObservableCollection<String> hosts = new ObservableCollection<String>();
}
Я инициализирован, или так я думал, класс, выполнив следующие действия:
TestClass tc = new TestClass();
tc.hosts.Add(Environment.MachineName);
DataContext = tc;
Может кто-нибудь объяснить мне, почему приведенный выше пример всегда возвращает null
в ObservableCollection<String>
hosts
Но если я делаю следующее, используя string[]
hosts
, я могу по крайней мере, получить значения и не null
вернулся
public class TestClass
{
ObservableCollection<ViewModel> test;
string[] hosts = new string[]
{
"server1",
"server2"
};
public TestClass()
{
test = CreateDS();
}
protected ObservableCollection<ViewModel> CreateDS()
{
ObservableCollection<ViewModel> vm = new ObservableCollection<ViewModel>();
return vm;
}
public ObservableCollection<ViewModel> Data {get {return test; } }
}
Мне нужно, чтобы получить доступ и заполнить hosts
ObservableCollection
из события кнопки вне класса. Я новичок в mvvm и классах.
Ваш второй пример даже не компилируется. –
И сначала тоже ... –
думаю, что это было из-за попытки вернуть res, а не vm –