資料繫結

可能的例外情況

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>