Gewusst wie: Binden an die Ergebnisse einer LINQ-Abfrage
In diesem Beispiel wird das Ausführen einer LINQ-Abfrage und dann die Bindung an die Ergebnisse veranschaulicht.
Beispiel
Im folgenden Beispiel werden zwei Listenfelder erstellt. Das erste Listenfeld enthält drei Listenelemente.
<ListBox SelectionChanged="ListBox_SelectionChanged"
SelectedIndex="0" Margin="10,0,10,0" >
<ListBoxItem>1</ListBoxItem>
<ListBoxItem>2</ListBoxItem>
<ListBoxItem>3</ListBoxItem>
</ListBox>
<ListBox Width="400" Margin="10" Name="myListBox"
HorizontalContentAlignment="Stretch"
ItemsSource="{Binding}"
ItemTemplate="{StaticResource myTaskTemplate}"/>
Wenn Sie ein Element aus dem ersten Listenfeld auswählen, wird der folgende Ereignishandler aufgerufen. In diesem Beispiel ist Tasks
eine Auflistung von Task
-Objekten. Die Task
-Klasse verfügt über eine Eigenschaft mit dem Namen Priority
. Dieser Ereignishandler führt eine LINQ-Abfrage aus, die die Auflistung von Task
-Objekten zurückgibt, welche den ausgewählten Prioritätswert aufweisen, und legt dies dann fest als DataContext:
using System.Linq;
Tasks tasks = new Tasks();
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int pri = Int32.Parse(((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString());
this.DataContext = from task in tasks
where task.Priority == pri
select task;
}
Das zweite Listenfeld bindet an diese Auflistung, da sein ItemsSource-Wert auf {Binding}
festgelegt ist. Folglich wird die zurückgegebene Auflistung angezeigt (basierend auf dem myTaskTemplate
DataTemplate).
Weitere Informationen
.NET Desktop feedback