在Xamarin Cross平台应用程序

时间:2015-08-31 14:46:34

标签: c# ios xaml xamarin xamarin.ios

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

我目前设置了ObservableCollection<T>类,用于将找到的所有设备添加到列表视图中。我真的希望在一个页面上拥有所有功能,这样我就不会使不同的状态复杂化,因为之前配对了#34;,#34;想要配对一个新设备&# 34;和&#34;没有配对&#34;。我最好使用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的正确结构。

1 个答案:

答案 0 :(得分:2)

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