c# - UWP C# 将 JSON 项绑定到 Button MenuFlyout
问题描述
我有一个将通过网络添加的客户端设备的动态列表。连接后,他们的详细信息将保存在 JSON 文件中。我想对客户端设备进行额外的显示和控制,在该按钮上单击一个Add
按钮,其中MenuFlyout
填充ClientName
了 JSON 文件中的客户端设备列表。一旦menuitem
选择,它将为网格上选择的相应客户端设备添加一个按钮和连接状态指示器(例如,连接、断开或错误)。
这是我为添加按钮所做的,但不知道如何绑定到 JSON
请帮忙。谢谢。
我的 json 类是在一个单独的 .cs 中创建MenuFlyoutItem_Click
的item.clientname
解决方案
你可以参考下面的代码。我还没有找到使用Binding或x:Bind的方法,但是我们可以在 json 数据反序列化后手动将 MenuFlyoutItem 添加到 MenuFlyout。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var deviceList = JsonConvert.DeserializeObject<List<DeviceInfo>>(jsonData);
var menuFlyout = new MenuFlyout();
foreach (var device in deviceList)
{
var menuFlyoutItem = new MenuFlyoutItem() { Name = device.DeviceName, Text = device.DeviceName };
menuFlyoutItem.Tag = device.DeviceName;
menuFlyoutItem.Click += MenuFlyoutItem_Click;
menuFlyout.Items.Add(menuFlyoutItem);
}
ButtonCreateDevice.Flyout = menuFlyout;
}
private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e)
{
var item = sender as MenuFlyoutItem;
var deviceName = item.DeviceName;
//TO DO SOMETHING
}
DeviceInfo 类定义为:
class DeviceInfo
{
public string DeviceName { get; set; }
public string Status { get; set; };
}
使用示例数据(jsonData)进行测试:
[{"DeviceName":"LED-1","Status":"Connected"},{"DeviceName":"LED-2","Status":"Connected"},{"DeviceName":"LED-3","Status":"Connected"}]
推荐阅读
- android - SSL Pinning 在 Android 中无法使用 Certificate Pinner(Hash Key Pinning)
- power-automate - Power Automate - 找不到触发器或操作
- reactjs - React Redux 应用程序中集成测试的最佳实践?
- google-analytics - 谷歌分析 - 没有正确测量所有销售数据
- javascript - 为什么我得到 NaN 以及如何获得预期的输出?
- javascript - Feathers-vuex 尽管安装了persistState,但我的身份验证状态不会持续存在
- c# - 从另一个项目(例如通过 nuget)回退资源 (RESX)
- html - CSS媒体查询不执行最大宽度
- javascript - Sequelize 包含的列在 where 子句中不被识别
- javascript - 在 D3 中应用包装功能后,文本被刷新到初始状态