当填充可观察集合时,我可以看到“集合”中的新数据时“返回”没有被调用。如果我从程序中的不同位置设置数据,它确实有效,所以我不能理解它的工作方式的一些细微差别。工作的部分是当我在“This works”下取出注释代码时,“ChooseFile()”不包含。在调试器中,我可以看到OptionsToChoose在两种情况下都有数据。当它工作时,XAML被正确更新。ObservableCollection设置后不返回新数据
class ScripterViewModel : BindableBase
{
public ScripterViewModel()
{
ScripterModel scripterModel = new ScripterModel();
ObservableCollection<string> tabsChoice = new ObservableCollection<string>();
tabsChoice.Add("Tabs");
tabsChoice.Add("Buttons");
Tabs = tabsChoice;
this.OpenFileBtn = new DelegateCommand(chooseFile, canChooseFile).ObservesProperty(() => OpenFile);
this.SaveFileBtn = new DelegateCommand(saveFile, canSaveFile).ObservesProperty(() => SaveFile);
//This works
//var myJSONDoc = JsonConvert.DeserializeObject<JSONclass>(File.ReadAllText(@"C:\Users\mike\Documents\Haas\Scripter\settings.json"));
//OptionsToChoose = new ObservableCollection<Tabbed>(myJSONDoc.TabbedBtns);
}
public void chooseFile()
{
var myJSONDoc = JsonConvert.DeserializeObject<JSONclass>(File.ReadAllText(@"C:\Users\mike\Documents\Haas\Scripter\settings.json"));
OptionsToChoose = new ObservableCollection<Tabbed>(myJSONDoc.TabbedBtns);
}
public ObservableCollection<Tabbed> _optionsToChoose = new ObservableCollection<Tabbed>();
public ObservableCollection<Tabbed> OptionsToChoose
{
get
{
return _optionsToChoose;
}
set
{
_optionsToChoose = value;
}
}
}
然后,您还应该使OptionsToChoose为只读属性,即删除setter。 – Clemens
是的,因为它只是暴露已经初始化的私人领域。 –
谢谢,这应该适用于我,因为我没有设置XAML方面的任何值。这更多地用作选择列表。 – coolercargo