Há um ListView vinculado a um ObservableCollection de string. Listview tem um rótulo e um ContentView (contendo nada além de um rótulo). Ambos estão vinculados à mesma coleção.
Além disso, existe um botão que gera alguns dados aleatórios para a coleção.
O problema é que quando eu executo o aplicativo e clico no botão Gerar dados, o rótulo é atualizado, mas não o ContentView.
O rótulo dentro da Visualização de Conteúdo também deve mudar.
O rótulo dentro da Visualização de Conteúdo permanece o mesmo
Pacotes Nuget:
Xamarin.Forms
NETStandard.Library
Dispositivos afetados:
Questionado sobre stackoverflow uma semana atrás - https://stackoverflow.com/questions/50211197/xamarin-forms-user-control-binding-inside-listview
fazendo
this.BindingContext = this;
em MagicBox.xaml.cs força o BindingContext para o objeto atual. Isso também significa que o BindingContext do pai não é mais herdado.
a fim de fazê-lo funcionar, altere seu código atrás para
[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 ();
}
}
e seu xaml para
<?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>
Obrigado @StephaneDelcroix , funcionou :)
Comentários muito úteis
fazendo
em MagicBox.xaml.cs força o BindingContext para o objeto atual. Isso também significa que o BindingContext do pai não é mais herdado.
a fim de fazê-lo funcionar, altere seu código atrás para
e seu xaml para