Вы можете обратиться к следующему коду.Я не нашел способа использования Binding или x: Bind , но мы можем добавить MenuFlyoutItem в MenuFlyout вручную после десериализации данных json.
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"}]