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 };
}


Technorati Tags: ,