كيفية القيام بما يلي: الربط بنتائج استعلام LINQ
يوضح هذا المثال كيفية تشغيل الاستعلام LINQ ثم ربط النتائج.
مثال
يقوم المثال التالي بإنشاء مربعي القائمة. مربع القائمة الأول يحتوى على ثلاثة عناصر.
<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}"/>
اختيار عنصر من مربع القائمة الأول يستدعى معالج الحدث التالي. في هذا المثال، Tasks هو مجموعة من كائنات Task. الفئة Task تحتوي الخاصية المسماة Priority. تشغيل معالج الحدث هذا يجرى استعلام LINQ يقوم بإرجاع مجموعة من الكائنات Task التي لديها قيمة الأفضلية المحددة ثم تعيينها كما فى DataContext:
Imports System.Linq
...
Private tasks As New Tasks()
...
Private Sub ListBox_SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
Dim pri As Integer = Int32.Parse((TryCast((TryCast(sender, ListBox)).SelectedItem, ListBoxItem)).Content.ToString())
Me.DataContext = From task In tasks
Where task.Priority = pri
Select task
End Sub
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;
}
يرتبط مربع القائمة الثاني بهذه المجموعة هذه لأن قيمة ItemsSource الخاصة به تم تعيينها الى {Binding}. نتيجة لذلك، فإنه يعرض المجموعة التي تم إرجاعها (استناداً إلى myTaskTemplate DataTemplate).
راجع أيضًا:
المهام
كيفية القيام بما يلي: توفير البيانات لربط في XAML
كيفية القيام بما يلي: ربط مجموعة و عرض معلومات اعتماداً على الاختيار