Hay un ListView enlazado a un ObservableCollection de cadena. Listview tiene una etiqueta y un ContentView (que no contiene nada más que una etiqueta). Ambos están vinculados a la misma colección.
Además, hay un botón que genera algunos datos aleatorios para la colección.
El problema es que cuando ejecuto la aplicación y hago clic en el botón Generar datos, la etiqueta se actualiza pero no el ContentView.
La etiqueta dentro de la vista de contenido también debería cambiar.
La etiqueta dentro de la vista de contenido sigue siendo la misma
Paquetes Nuget:
Xamarin.Forms
NETStandard.Library
Dispositivos afectados:
Preguntado en stackoverflow hace una semana: https://stackoverflow.com/questions/50211197/xamarin-forms-user-control-binding-inside-listview
haciendo
this.BindingContext = this;
en MagicBox.xaml.cs fuerza el BindingContext al objeto actual. También significa que el BindingContext del padre ya no se hereda.
para que funcione, cambie su código detrás a
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class MagicBox : ContentView
{
public static readonly BindableProperty TextProperty =
BindableProperty.Create("Text", typeof(string), typeof(MagicBox), default(string));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
public MagicBox ()
{
InitializeComponent ();
}
}
y tu xaml a
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TestSample.Controls.MagicBox"
x:Name="box">
<ContentView.Content>
<Grid>
<Label Text="{Binding Text, Source={x:Reference box}}" />
</Grid>
</ContentView.Content>
</ContentView>
Gracias @StephaneDelcroix , funcionó :)
Comentario más útil
haciendo
en MagicBox.xaml.cs fuerza el BindingContext al objeto actual. También significa que el BindingContext del padre ya no se hereda.
para que funcione, cambie su código detrás a
y tu xaml a