我正在研究一個新的UWP應用程序,它通過藍牙與某些硬件進行交互。使用windows-universal-samples repo作爲指導,我能夠成功地獲得我想要的工作。如何在Prism(MVVM)中使用Windows.Devices.Enumeration.DevicePicker?
現在我試圖將我在點擊事件處理程序中編寫的代碼重構爲使用Prism的視圖模型類。但是我不知道如何解決這個問題。在我需要在View和ViewModel之間傳遞數據的其他場景中,我將在ViewModel上創建一個屬性,並將其綁定到視圖的XAML中的控件。
問題是Windows.Devices.Enumaration.DevicePicker
的使用方式與MVVM模式不兼容。在點擊處理程序中,數據和控件合併在一起,我看不到如何在視圖模型上創建某種列表屬性,然後將其綁定到視圖。這裏是我一起工作的代碼的最簡單的例子:
async void DiscoverButton_OnClick(object sender, RoutedEventArgs e)
{
var devicePicker = new DevicePicker();
devicePicker.Filter.SupportedDeviceSelectors.Add(BluetoothLEDevice.GetDeviceSelectorFromPairingState(true));
// Calculate the position to show the picker (right below the buttons)
var ge = DiscoverButton.TransformToVisual(null);
var point = ge.TransformPoint(new Point());
var rect = new Rect(point, new Point(100, 100));
var device = await devicePicker.PickSingleDeviceAsync(rect);
var bluetoothLEDevice = await BluetoothLEDevice.FromIdAsync(device.Id);
}
見PickSingleDeviceAsync()
直接創建一個控制。
你解決了你的問題嗎?如果您對此問題有任何其他疑慮,請隨時通知我。 –