首页 > 解决方案 > UWP C# 将 JSON 项绑定到 Button MenuFlyout

问题描述

我有一个将通过网络添加的客户端设备的动态列表。连接后,他们的详细信息将保存在 JSON 文件中。我想对客户端设备进行额外的显示和控制,在该按钮上单击一个Add按钮,其中MenuFlyout填充ClientName了 JSON 文件中的客户端设备列表。一旦menuitem选择,它将为网格上选择的相应客户端设备添加一个按钮和连接状态指示器(例如,连接、断开或错误)。 这是我为添加按钮所做的,但不知道如何绑定到 JSON

请帮忙。谢谢。

json文件 我的 json 类是在一个单独的 .cs 中创建MenuFlyoutItem_Clickitem.clientname

我检查过的json文件clientslist.txt格式似乎正确。JSON 文件

在此处输入图像描述

在此处输入图像描述

标签: c#jsonxamluwpwindows-iot-core-10

解决方案


你可以参考下面的代码。我还没有找到使用Bindingx: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"}]

在此处输入图像描述


推荐阅读