从 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;
}
我建议使用循环来创建所有菜单项。
在代码后台工作时:
<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