Command에 바인드 된 ConnectButton이 있습니다. 그의 Command Im에서 DevicePicker를 호출하고 DeviceSelected Event를 메서드로 설정합니다.DevicePicker.DeviceSelected의 속성 변경 방법
private void connectButtonCommand()
{
DevicePicker myDevicePicker = new DevicePicker();
myDevicePicker.Show(new Rect(10, 10, 200, 200));
//myDevicePicker.Filter.SupportedDeviceSelectors.Add(BluetoothDevice.GetDeviceSelectorFromPairingState(false));
myDevicePicker.Filter.SupportedDeviceSelectors.Add(BluetoothDevice.GetDeviceSelectorFromPairingState(true));
myDevicePicker.DeviceSelected += MyDevicePicker_DeviceSelected;
}
및 Device_IsConnected 방법과 같은 일부 속성을 설정해야
private async void MyDevicePicker_DeviceSelected(DevicePicker sender, DeviceSelectedEventArgs args)
{
var deviceInfo = args.SelectedDevice as DeviceInformation;
Device = deviceInfo;
BluetoothController = new BluetoothController.BluetoothController();
var list = await BluetoothController.FindPairedDevicesAsync();
RefcommDevice = list.First(x => x.Id.Contains(Device.Id));
List<DeviceInformation> deviceList = new List<DeviceInformation>();
deviceList = list.ToList();
Device = deviceList[0];
connected = await BluetoothController.ConnectAsync(RefcommDevice);
isConnected = connected;
IsConnectedEvent += new IsConnectedEentHandler(Device_IsConnected);
if (IsConnected)
{
if(IsConnectedEvent != null)
IsConnectedEvent();
}
paired = true;
}
있어서
private void Device_IsConnected()
{
ConnectButtonVisibility = Visibility.Collapsed;
OnButtonVisibility = Visibility.Visible;
OffButtonVisibility = Visibility.Visible;
ReadDatafButtonVisibility = Visibility.Visible;
}
티가 작동되지 않는다. 다음과 같은 오류가 나타납니다.
System.Runtime.InteropServices.COMException (0x8001010E) : 스레드가 마샬링 된 전쟁으로 인해 전쟁이 끝났습니다. (HRESULT에서 예외 : 0x8001010E (RPC_E_WRONG_THREAD)) System.StubHelpers.EventArgsMarshaler.CreateNativePCEventArgsInstance (문자열 이름)에서 System.Runtime.InteropServices.WindowsRuntime.PropertyChangedEventArgsMarshaler.ConvertToNative (PropertyChangedEventArgs managedArgs)에서 System.ComponentModel.PropertyChangedEventHandler.Invoke에서 (개체 송신자 PropertyChangedEventArgs E)에서 ArduinoDistance.ViewModels.StartPageViewModel ArduinoDistance.ViewModels.StartPageViewModel.set_ConnectButtonVisibility (시정 값)에 ArduinoDistance.ViewModels.BaseViewModel.SetProperty [T (T & 보관소, T 값 문자열 PROPERTYNAME) 에서 . Device_IsConnected()
여기에 이것을 해결할 수있는 간단한 방법이 있습니까? 나는 connectButtonCommand()에서 잠시 동안 (! IsConnected) 설정하여 그것을 해결하고 거기에 내 UI 변경합니다. 그러나 나는 그게 최선의 방법이라고 생각합니다.
편집이 를 사용하여 문제를 해결 : 응용 프로그램 수 없습니다
await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() =>
testMethod());
감사
Agredo 오류가 말한대로
이것은 작동하지 않습니다. \t Window.Current == null 아마도 내 ViewModel에 있기 때문에 어쩌면? – Agredo
감사합니다. 당신의 대답은 많은 도움이되었습니다! – Agredo