从JSON创建菜单

时间:2016-02-19 12:24:03

标签: c# json wpf menu

我需要创建从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;
}

1 个答案:

答案 0 :(得分:0)

我建议使用循环来创建所有MenuItem。

在Code背后工作:

<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..)              
        });

使用Bindings时:

如下所示绑定您的菜单:

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

向ViewModel添加属性(ObservableCollection<string>或更好ObservableCollection<MenuItem>)。

只需将您从JSON获得的物品添加到该集合中。

不要忘记实施INotifyPropertyChanged