當填充可觀察集合時,我可以看到「集合」中的新數據時「返回」沒有被調用。如果我從程序中的不同位置設置數據,它確實有效,所以我不能理解它的工作方式的一些細微差別。工作的部分是當我在「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