XAML 在Xamarin跨平台应用程序中使用ObservableCollection数据渲染DisplayActionSheet

wljmcqd8  于 2023-01-28  发布在  其他
关注(0)|答案(2)|浏览(159)

我正在使用Xamarin的Monkey.Robotics组件在Xamarin中构建一个新的BLE应用程序。我使用这个Heart Rate示例作为起点。但是,我需要一个 * Jmeter 板 * 类型的主页,在那里显示接收到的特征。然后,我希望在底部有一个 “添加设备” 按钮,用于触发扫描和配对过程。
我现在有一个ObservableCollection<T>类,用来把所有的设备添加到一个列表视图中。我真的希望所有的功能都在一个页面上,这样我就不会把不同的状态复杂化,比如“以前配对过”,“想配对一个新设备”和“从来没有配对过”。我最好使用DisplayActionSheet
这是给出的例子

var actionButton1 = new Button { Text = "ActionSheet Simple" };
actionButton1.Clicked += async (sender, e) => {
    var action = await DisplayActionSheet ("ActionSheet: Send to?", "Cancel", null, "Email", "Twitter", "Facebook");
    Debug.WriteLine("Action: " + action); // writes the selected button label to the console
 };

我是否可以通过 ObservableCollection 使用来自扫描的动态数据来填充它?
以下是我目前的安排:

this.devices = new ObservableCollection<IDevice> ();
listView.ItemsSource = devices;

adapter.DeviceDiscovered += (object sender, DeviceDiscoveredEventArgs e) => {
    Device.BeginInvokeOnMainThread(() => {
        devices.Add (e.Device);
    });
};

如果能就我如何实现这一点提出建议(以及这是否可能,或者有更好的方法实现这一点?),同时仍然保持DisplayActionSheet的正确结构,我将不胜感激。

ux6nzvsh

ux6nzvsh1#

DisplayActionSheet接受params string[] list,所以下面的结构有效!

actionButton1.Clicked += async (sender, e) => {
    var action = await DisplayActionSheet ("ActionSheet: Send to?", "Cancel", null, this.devices.Select(device => device.Name).ToArray());
     // map action back to IDevice
     // ...
 };
ipakzgxi

ipakzgxi2#

//显示操作表. LCA是一个模型类型列表

var LCA = await ca.ListaCausas();

 string causa = await DisplayActionSheet("Lista de Causas", "Cancelar", "Ok", (string[])LCA.Select(x => x.Nombre.ToString()).ToArray());

            txtCausas.Text=causa;

相关问题