在我的UWP应用主页xaml中,我尝试将ObservableCollection<BluetoothLEDevice> BleDeviceList
绑定到列表视图。
如果我运行我的应用程序,我会收到以下错误:
System.InvalidCastException:无法转换类型为&#39; Windows.Devices.Bluetooth.BluetoothLEDevice&#39;的对象输入&#39; UWPsimpleBLE_exampleWithSomeControls.MainPage&#39;。 at UWPsimpleBLE_exampleWithSomeControls.MainPage.MainPage_obj2_Bindings.SetDataRoot(Object newDataRoot) at UWPsimpleBLE_exampleWithSomeControls.MainPage.MainPage_obj2_Bindings.ProcessBindings(Object item,Int32 itemIndex,Int32 phase,Int32&amp; nextPhase)
<Page.Resources>
<DataTemplate x:Key="ListDataTemplate" x:DataType="local:MainPage">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Text="{x:Bind Path=BleDevice.Name }" HorizontalAlignment="Center" Width="150" />
<StackPanel Margin="20,20,0,0">
<!--<TextBlock Text="{x:Bind BleDevice.BluetoothAddress.ToString()}" HorizontalAlignment="Left" FontSize="16" />-->
<!--<TextBlock Text="{x:Bind BleDevice.ConnectionStatus}" HorizontalAlignment="Left" FontSize="10" />-->
</StackPanel>
</StackPanel>
</DataTemplate>
</Page.Resources>
<ListView HorizontalAlignment="Stretch" Height="100" Margin="0,0,0,0"
VerticalAlignment="Top" Background="#FFDED7D7"
BorderBrush="#FFF88686" Foreground="Black"
ItemsSource="{x:Bind BleDeviceList}"
ItemTemplate="{StaticResource ListDataTemplate }">
</ListView>
如果我注释掉TextBlock文本行..错误消失了,所以我必须对我的绑定做错了
答案 0 :(得分:1)
正如评论中所讨论的,解决方案是将x:DataType从MainPage
更改为BluetoothLEDevice
类。此外,还必须导入BluetoothLEDevice
类。对于x:Bind,您必须定义绑定到的类的类型,在这种情况下,正确的类是BluetoothLEDevice
。
所以这应该是完成工作的代码:
<DataTemplate x:Key="ListDataTemplate" x:DataType="local:BluetoothLEDevice">
此行使BluetoothLEDevice
类在XAML页面中可见:
xmlns:local="using:Windows.Devices.Bluetooth"
This page描述x:与DataTemplates绑定(特别是&#34; DataTemplate和x:DataType&#34;部分)。