資料繫結
可能的例外情況
System.ArrayTypeMismatchException:嘗試將元素作為與陣列不相容的型別進行訪問
嘗試在啟用 XAML 預編譯時將集合繫結到不可繫結的屬性時,可能會發生此異常。一個常見的例子是嘗試繫結到 Picker.Items
。見下文。
System.ArgumentException:型別為“Xamarin.Forms.Binding”的物件無法轉換為“System.String”型別
嘗試在禁用 XAML 預編譯時將集合繫結到不可繫結的屬性時,可能會發生此異常。一個常見的例子是嘗試繫結到 Picker.Items
。見下文。
Picker.Items
屬性不可繫結
此程式碼將導致錯誤:
<!-- BAD CODE: will cause an error -->
<Picker Items="{Binding MyViewModelItems}" SelectedIndex="0" />
例外可能是以下之一:
System.ArrayTypeMismatchException:嘗試將元素作為與陣列不相容的型別進行訪問。
要麼
System.ArgumentException:型別為“Xamarin.Forms.Binding”的物件無法轉換為“System.String”型別。
具體來說,Items
屬性是不可繫結的。解決方案包括建立自己的自定義控制元件或使用第三方控制元件,例如 FreshEssentials 的 BindablePicker
。在專案中安裝 FreshEssentials NuGet 軟體包後,可以使用包含 ItemsSource
屬性的軟體包的 BindablePicker
控制元件:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:fe="clr-namespace:FreshEssentials;assembly=FreshEssentials"
xmlns:my="clr-namespace:MyAssembly;assembly=MyAssembly"
x:Class="MyNamespace.MyPage">
<ContentPage.BindingContext>
<my:MyViewModel />
</ContentPage.BindingContext>
<ContentPage.Content>
<fe:BindablePicker ItemsSource="{Binding MyViewModelItems}" SelectedIndex="0" />
</ContentPage.Content>
</ContentPage>