WPF, Silverlight, Silverlight for Windows Phone und Metro Style Apps

WPF 4.5 Den DataContext überprüfen
Kommentare

In der neuen Kolumne „XAML Expertise“ des Windows Developer präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF 4.5: Den DataContext überprüfen“.

Windows Developer

Dieser Teil der Serie „XAML Expertise“ von Gregor Biswanger ist erstmalig erschienen im Windows Developer 9.2012

Wenn auf ein ItemsControl ein Data Binding stattfindet, wird ein Elementcontainer für jedes Element generiert. Sollte dann noch eine Instanz von einem Elementcontainer existieren, aber zeitgleich das Element aus der Collection entfernt werden, ist der DataContext leer, und es wird beim wiederholten Zugriff eine Exception geworfen. Ab WPF 4.5 erhält der DataContext nun einen DisconnectedSource-Zustand sobald Elemente entfernt wurden. Womit nun über das BindingOperations.DisconnectedSource-Property eine Überprüfung stattfinden kann (Listing 1). Zusätzlich wird ein DataContextChanged-Event für jedes UIElement zur Verfügung gestellt, worin auch eine solche Überprüfung ausgeführt werden kann.

Listing 1: Den DataContext unter WPF 4.5 auf Gültigkeit überprüfen

private void Button_Click(object sender, RoutedEventArgs e)
{
  ListBoxItem listBoxItem = (ListBoxItem) lbCustomers.ItemContainerGenerator.ContainerFromIndex(0);
  Customer customer = (Customer) listBoxItem.DataContext;
  
  MessageBox.Show("Hello " + customer.Name);
  
  Customers.RemoveAt(0);
  
  if(listBoxItem.DataContext != BindingOperations.DisconnectedSource)
  {
    Customer customerB = (Customer) listBoxItem.DataContext;
    MessageBox.Show("Hello " + customerB.Name);
  }
  else
  {
    MessageBox.Show("Item Container removed from Visual Tree!");
  }
}  

Gregor Biswanger ist Microsoft MVP für Client App Dev und arbeitet als Solution Architect und XAML-Experte in der Firma impuls Informationsmanagement GmbH in Nürnberg. Seine Schwerpunkte sind die .NET-Architektur, Silverlight und agile Prozesse. Er veröffentlichte vor Kurzem seine DVD mit Videotrainings zum Thema „WPF 4 und Silverlight 4“ bei Addison-Wesley von video2brain. Biswanger ist auch freier Autor, Speaker und Microsoft CLIPler der INdotNET (Ingolstädter .NET Developers Group). Sie erreichen seinen Blog unter www.dotnet-blog.net.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -