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