Sembra che Silverlight3 abbia qualche problema col databinding…, prendiamo una classe Person che implementa INotifyPropertyChanged e supponiamo di volerne editare le proprietà Name e Age.
<StackPanel>
<TextBox Text="{Binding Path=Name, Mode=TwoWay}" />
<TextBox Text="{Binding Path=Age, Mode=TwoWay}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
nel costruttore del codebehind, come da manuale, scriveremo qualcosa tipo:
public MainPage()
{
InitializeComponent();
this.DataContext = new Person() { Name = "Corrado", Age = 99 };
}
Malgrado le due texboxes vengano correttamente popolate, scrivendo qualcosa nelle texbox e spostando il focus l’entità non viene valorizzata coi nuovi valori, per ovviare al problema è necessario valorizzare il DataContext nell’evento Loaded dello UserControl.
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
this.DataContext = new Person() { Name = "Corrado", Age = 99 };
}