Нужно реализовать DataTemplateSelector в uwp

Пытаюс дабавить сюда часть кода где по клику на определеный тип на ListView будет отображаться элементы этого типа после долгих поиcков наконец смог получить все нужные данные из JSON. теперь все подряд могу показывать на ListView но хочу сделать по нажатию на элемент думаю использовать SelectedItem https://ru.stackoverflow.com/users/220553/evgeniyz

**MainPage**

        public Class1[] RootObject { get; set; }
        public ObservableCollection<Class1> roots { get; set; } = new ObservableCollection<Class1>();

        public Detail[] Title { get; set; }
        //public  Detail[] roots { get; set; }
        public MainPage()
        {
            this.InitializeComponent();
            this.DataContext = roots;
            string FilePath = Path.Combine(Package.Current.InstalledLocation.Path, "Class1.json");
            using (StreamReader file = File.OpenText(FilePath))
            {
                var json = file.ReadToEnd();
                RootObject = JsonConvert.DeserializeObject<Class1[]>(json);

                foreach (var item in RootObject)
                {
                    foreach (var a in item.details)
                    {
                        if (a.detail_type == "Pattern")
                        {
                            roots.Add(new Icon
                            {
                                icon_url = a.icon_url
                            });
                        }
                    }
                    foreach (var i in item.details)
                    {
                        if (i.detail_type == "Color")
                        {
                            roots.Add(new Color
                            {
                                fill_color = i.fill_color
                            });
                        }
                        else if (i.detail_type == "Gradient")
                        {
                            roots.Add(new Gradient_Props
                            {
                                gradient_stop_1 = i.gradient_props.gradient_stop_1,
                                gradient_stop_2 = i.gradient_props.gradient_stop_2

                            });
                        }
                    }
                }
                itemGridView.ItemsSource = roots;

**DataTemplateSelector**
 public class MyDataTemplateSelector : DataTemplateSelector
    {
        public DataTemplate ColorTemplate { get; set; }
        public DataTemplate IconTemplate { get; set; }
        public DataTemplate Gradient_Template { get; set; }
        protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
        {
            if (item is Icon)
                return IconTemplate;
            if (item is Color)
                return ColorTemplate;
            if (item is Gradient_Props)
                return Gradient_Template;
            return base.SelectTemplateCore(item, container);
        }

    }
**json**

[
    {
        "itemType": "Canvas",
        "type":  "Color",
        "title": "gen_color",
        "details": [
    
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#000000"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#ffffff"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#feffdf"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#fdffab"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#fff9af"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#f9ff21"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#ffd933"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#ffbd39"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#ff8000"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#f05a28"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#f12d2d"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#ff0000"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#defcfc"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#a6e3e9"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#7efaff"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#53cde2"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#26baee"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#2470a0"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#235784"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#1b3764"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#4a0e5c"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#5e227f"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#a8026f"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#d22780"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#ff5da2"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#fa67ab"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#f48fb1"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#f9a1bc"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#c7f2e3"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#9ed9c5"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#73dbc4"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#1abb9c"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#219897"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#155e63"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#00454a"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#003545"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#28544b"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#227066"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#4a772f"
            },
            {
                "detail_type": "Color",
                "itemType": "Canvas",
                "fill_color": "#7cbd1e"
            }
        ]
    },
    {
        "itemType": "Canvas",
        "title": "effect_color_gradient",
        "details": [
        
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#002092",
                    "gradient_stop_2": "#1AB9C8"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#F75070",
                    "gradient_stop_2": "#FFE194"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#2B0096",
                    "gradient_stop_2": "#E9649B"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#5A63D8",
                    "gradient_stop_2": "#CD90E1"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FDE869",
                    "gradient_stop_2": "#00B1C1"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FECF60",
                    "gradient_stop_2": "#974EF6"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FFD529",
                    "gradient_stop_2": "#FD8440"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#C24078",
                    "gradient_stop_2": "#FFC3B9"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#00EAF8",
                    "gradient_stop_2": "#6D42EF"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FF90D3",
                    "gradient_stop_2": "#3AEF3C"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FFCD2C",
                    "gradient_stop_2": "#FF0663"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FC1E50",
                    "gradient_stop_2": "#D2B0EF"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#EF14C5",
                    "gradient_stop_2": "#FFC160"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#7AE4FF",
                    "gradient_stop_2": "#FC2F5D"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#6CF6DA",
                    "gradient_stop_2": "#176DA0"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FF0467",
                    "gradient_stop_2": "#FC7437"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FD8041",
                    "gradient_stop_2": "#FF4CA1"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#FEB984",
                    "gradient_stop_2": "#FF5542"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#00FAC1",
                    "gradient_stop_2": "#C500E1"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#6FFF00",
                    "gradient_stop_2": "#005BFF"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#F8A2ED",
                    "gradient_stop_2": "#934EAE"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#5F86EC",
                    "gradient_stop_2": "#7C4CB0"
                }
            },
            {
                "detail_type": "Gradient",
                "itemType": "Canvas",
                "gradient_props": {
                    "gradient_stop_1": "#EB4B92",
                    "gradient_stop_2": "#CA76E3"
                }
            }
        ]
    },
    {
        "itemType": "Canvas",
        "title": "win_pattern",
        "details": [
        
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_1.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_1.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_2.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_2.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_3.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_3.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_4.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_4.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_5.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_5.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_6.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_6.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_7.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_7.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_8.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_8.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_9.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_9.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_10.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_10.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_11.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_11.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_12.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_12.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_13.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_13.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_14.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_14.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_15.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_15.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_16.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_16.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_17.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_17.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_18.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_18.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_19.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_19.jpg"
            },
            {
                "detail_type": "Pattern",
                "itemType": "Canvas",
                "icon_url": "http://pastatic.picsart.com/backgrounds_ver7/icons/i_bg_20.jpg",
                "resource_url": "http://pastatic.picsart.com/backgrounds_ver7/2048/bg_20.jpg"
            }
        ]
    }
]


**Model Json On C#**
 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 override string ToString()
        {
            return $"{itemType}{type}{title}{details}";
        }
    }
    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 override string ToString()
        {
            return $"{detail_type}{title}{type}";
        }
    }
    public class Color : Detail
    {
        public Color()
        {

        }
        public Color(string color)
        {
            this.fill_color = color;
        }
    }
    public class Icon : Detail
    {
        public Icon()
        {

        }
        public Icon(string icon)
        {
            this.icon_url = icon;
        }
    }
    public class Gradient_Props : Class1
    {
        public string gradient_stop_1 { get; set; }
        public string gradient_stop_2 { get; set; }
    }

Ответы (0 шт):