В примерах новые элементы добавляются в Observercollection вручную, проблема в том, что я хочу добавить данные из моего rootobject, где все они существуют и читаются из Json.
Main Page
ObservableCollection<Class1> rootobject { get; set; }
Class1 cs1 = new Class1();
public Detail detail { get; set; }
public MainPage()
{
this.InitializeComponent();
string FilePath = Path.Combine(Package.Current.InstalledLocation.Path, "Class1.json");
using (StreamReader file = File.OpenText(FilePath))
{
var json = file.ReadToEnd();
rootobject = JsonConvert.DeserializeObject<ObservableCollection<Class1>>(json);
//Color c = new Color();
var items = new List<Class1>();
items.Add(new Detail
{
icon_url = ?,
});
items.Add(new Gradient_Props
{
gradient_stop_1 = ?,
gradient_stop_2 = ?,
});
}
}
Class created special JSON as Class
public class Rootobject
{
public Class1[] Property1 { get; set; }
}
public class Class1
{
public string itemType { get; set; }
public string type { get; set; }
public string title { get; set; }
public Detail[] details { get; set; }
}
public class Detail : Class1
{
public string detail_type { get; set; }
public string itemType { get; set; }
public string fill_color { get; set; }
public Gradient_Props gradient_props { get; set; }
public string icon_url { get; set; }
public string resource_url { get; set; }
}
public class Gradient_Props : Class1
{
public string gradient_stop_1 { get; set; }
public string gradient_stop_2 { get; set; }
}
public class Color : Class1
{
public Color(string color)
{
color = this.title;
}
}
public class Icon : Class1
{
public Icon(Detail[] iconUrl)
{
iconUrl = this.details;
}
}
DataTemplateSelector? Зачем вы делаетеDetail : Class1(наследование)? Зачемusing (StreamReader file = File.OpenText(FilePath))? Ну и зачемvar items = new List<Class1>();? Про привязки вы явно не читали, ибо "привязаться можно только к публичным свойствам", где у вас публичное свойство? – EvgeniyZ Sep 03 '20 at 12:392.DataTemplateSelector для перемещения для контроля управления 3.Detail : Class1 если не наследование то были проблеми и кое какие свойства получили null 4.using (StreamReader file = File.OpenText(FilePath)) для чтения файла json 5.var items = new List(); Здесь для использования observercollection
Понятно что не все идеально написанно но питаюсь понять и что-то изменить @EvgeniyZ
– Խաչատուր Մելքոնյան Sep 03 '20 at 12:50.DeserializeObject<...>(File.ReadAllText("Class1.json"));5. Как это относится кObserverCollection?var allGradient = json.SelectMany(x => x.Details).Where(x=>x.DetailType == TypeEnum.Gradient).Select(x=> new { First = x.GradientProps.GradientStop1, Second = x.GradientProps.GradientStop2 });, что даст удобный список градиентов со значениямиFirstиSecond, в которых будут цвета. Так что, как видите, читаемая и понятная структура данных, это удобно. Вам остается лишь это привязать куда надо, а для этого читайте про привязки!! – EvgeniyZ Sep 03 '20 at 13:39