【问题标题】:Rendering a DisplayActionSheet with ObservableCollection data in Xamarin Cross platform app在 Xamarin 跨平台应用程序中使用 ObservableCollection 数据呈现 DisplayActionSheet
【发布时间】:2015-08-31 14:46:34
【问题描述】:

我正在使用 Xamarin 中的 Monkey.Robotics 组件在 Xamarin 中构建一个新的 BLE 应用程序。我使用这个Heart Rate 示例作为起点。但是,我想要一个 dashboard 类型的主页,其中显示收到的特征。然后我想要一个底部的“添加设备”按钮,它会触发扫描和配对过程。

我目前设置了一个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 的正确结构。

【问题讨论】:

    标签: c# ios xaml xamarin xamarin.ios


    【解决方案1】:

    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
         // ...
     };
    

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2016-09-19
      相关资源
      最近更新 更多