Looking for xamarin.forms Keywords? Try Ask4Keywords

Xamarin.FormsEl enlace de datos


Observaciones

Posibles excepciones

System.ArrayTypeMismatchException: se intentó acceder a un elemento como un tipo incompatible con la matriz.

Esta excepción puede ocurrir cuando se intenta vincular una colección a una propiedad no vinculable cuando está habilitada la precompilación XAML. Un ejemplo común es intentar enlazar con Picker.Items . Vea abajo.

System.ArgumentException: el objeto de tipo 'Xamarin.Forms.Binding' no se puede convertir al tipo 'System.String'.

Esta excepción puede ocurrir cuando se intenta vincular una colección a una propiedad no vinculable cuando la precompilación de XAML está deshabilitada. Un ejemplo común es intentar enlazar con Picker.Items . Vea abajo.

El Picker.Items propiedad no es enlazable

Este código causará un error:

<!-- BAD CODE: will cause an error -->
<Picker Items="{Binding MyViewModelItems}" SelectedIndex="0" />

La excepción puede ser una de las siguientes:

System.ArrayTypeMismatchException: se intentó acceder a un elemento como un tipo incompatible con la matriz.

o

System.ArgumentException: el objeto de tipo 'Xamarin.Forms.Binding' no se puede convertir al tipo 'System.String'.

Específicamente, la propiedad Items no es vinculable. Las soluciones incluyen crear su propio control personalizado o usar un control de terceros, como BindablePicker de FreshEssentials . Después de instalar el paquete NuGet de FreshEssentials en su proyecto, el control BindablePicker del paquete con una propiedad de ItemsSource está disponible:

<?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>

El enlace de datos Ejemplos relacionados