从 JSON 创建菜单

本文关键字:菜单 创建 JSON | 更新日期: 2023-09-27 18:35:18

我需要创建从json文件获取的菜单项。我已经反序列化了 json 文件,但我不知道如何将项目添加到菜单控件中。

到目前为止我得到了什么:

using (StreamReader r = new StreamReader("D:''WORKING''BOUNCEFORMS''Week8''Feb18''New folder''dynamicmenu''dynamicmenu''menulist.json"))
{
    json = r.ReadToEnd();
    JObject objJobject = JObject.Parse(json);
    string somestr = objJobject["Menu1"].ToString();
    string somestr2 = somestr.Remove(0, 1);
    string somestr3 = somestr2.Remove(somestr2.Length - 1);            
    JObject subobject = JObject.Parse(somestr3);
    string somesubstr = subobject["SubMenu1"].ToString();
    string a = somesubstr.Remove(0, 1);
    string b = a.Remove(a.Length - 1);
    JObject strjobj = JObject.Parse(b);
    string strsub = strjobj["Text"].ToString();             
    List<string> menus = new List<string>();
    menus.itemsource=strsub;
}

从 JSON 创建菜单

我建议使用循环来创建所有菜单项。

在代码后台工作时:

<Menu x:Name="MyMenu"></Menu> //Define a Menu in your XAML

在 MyWindow.xaml 中.cs您可以添加项目。

MyMenu.Items.Add(new MenuItem()
        {
            Header = "", //Your Header for this Item (Part of your JSON i guess..)              
        });

使用绑定时:

像这样绑定您的菜单:

 <Menu ItemsSource="{Binding Path=MenuItems, 
                             Mode=OneWay, 
                             UpdateSourceTrigger=PropertyChanged}"/>

将属性添加到视图模型(ObservableCollection<string>或更好的ObservableCollection<MenuItem>)。

只需将从 JSON 获取的项目添加到该集合即可。

不要忘记实施INotifyPropertyChanged