我正在使用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的正确结构。
答案 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
// ...
};