نظرة عامة على ListView

يوفر عنصر التحكم ListView البنية الأساسية لعرض مجموعة من عناصر البيانات الموجودة في التخطيطات المختلفة. على سبيل المثال، قد يحتاج مستخدم إلى عرض عناصر البيانات في جدول و أيضاً لفرز الأعمدة الخاصة به.

يشتمل هذا الموضوع على الأقسام التالية.

  • ما هو الــ ListView ؟
  • تعريف وضع عرض لــ ListView
  • ربط البيانات بالــ ListView
  • تنميط ListView الذي يطبق GridView
  • مشاركة نفس وضع العرض
  • إنشاء وضع عرض مخصص
  • موضوعات ذات صلة

ما هو الــ ListView ؟

إن عنصر تحكم ListView هو ItemsControl الذي يتم اشتقاقه من ListBox. عادةً ، العناصر الخاصة به تكون أعضاء خاصة بمجموعة بيانات وهي ممثلة كـكائنات ListViewItem . إن ListViewItem هو ContentControl ويمكن أن يحتوي على عنصر تابع واحد . ومع ذلك، يمكن لهذا العنصر التابع أن يكون أي عنصر مرئي.

تعريف وضع عرض لــ ListView

لتحديد وضع عرض للمحتوى الخاص بعنصر تحكم ListView ، يمكنك تعيين خاصية View . وضع العرض الذي يوفره Windows Presentation Foundation (WPF) هو GridView ، والذي يعرض مجموعة من عناصر البيانات في جدول يحتوي على أعمدة قابلة للتخصيص.

المثال التالي يعرض كيفية تعريف عنصر تحكم GridView لعنصر تحكم ListView الذي يعرض معلومات الموظف.


<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

  <ListView.View>

    <GridView AllowsColumnReorder="true"
              ColumnHeaderToolTip="Employee Information">

      <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=FirstName}" 
                      Header="First Name" Width="100"/>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=LastName}" 
                      Width="100">
                      <GridViewColumnHeader>Last Name
                          <GridViewColumnHeader.ContextMenu>
                          <ContextMenu  MenuItem.Click="LastNameCM_Click"  
                                        Name="LastNameCM">
                              <MenuItem Header="Ascending" />
                              <MenuItem Header="Descending" />
                          </ContextMenu>
                          </GridViewColumnHeader.ContextMenu>
                      </GridViewColumnHeader>
                  </GridViewColumn>

                  <GridViewColumn DisplayMemberBinding=
                          "{Binding Path=EmployeeNumber}" 
                      Header="Employee No." Width="100"/>
    </GridView>

  </ListView.View>
</ListView>

يبين الرسم التوضيحي التالي كيف ستظهر البيانات بالنسبة للمثال السابق.

ListView مع إخراج GridView

يمكنك إنشاءوضع عرض مخصص بواسطة تعريف فئة ترث من الفئة ViewBase . إن فئة ViewBase توفر البنية الأساسية التي تحتاج لإنشاء عرض مخصص. لمزيد من المعلومات حول كيفية إنشاء عرض مخصص، راجع كيفية القيام بما يلي: إنشاء وضع عرض مخصص ل ListView.

ربط البيانات بالــ ListView

قم باستخدام خصائص Items و ItemsSource لتحديد العناصر بالنسبة لعنصر التحكم ListView . يقوم المثال التالي بإعداد الخاصية ItemsSource إلى مجموعة بيانات التي تسمى EmployeeInfoDataSource.

<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

في ترتبط الكائنات GridView ، GridViewColumn بحقول البيانات المحددة . المثال التالي يربط كائن GridViewColumn بحقل بيانات بواسطة تحديد Binding للخاصية DisplayMemberBinding .

Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
<GridViewColumn DisplayMemberBinding=
                    "{Binding Path=FirstName}" 
                Header="First Name" Width="100"/>

يمكنك أيضاً تحديد Binding كجزء من تعريف DataTemplate الذي تقوم باستخدامه لتننميط الخلايا في العمود. في المثال التالي ، فإن DataTemplate الذي يتم تعريفه بــ ResourceKey يعين Binding لــ GridViewColumn. ملاحظة لا يحدد هذا المثال الــ DisplayMemberBinding لأن القيام بذلك يتجاوز الربط المحدد بواسطة DataTemplate.

<DataTemplate x:Key="myCellTemplateMonth">
  <DockPanel>
    <TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
      <TextBlock.Text>
        <Binding Path="Month"/>
      </TextBlock.Text>
    </TextBlock>
  </DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
      CellTemplate="{StaticResource myCellTemplateMonth}"/>

تنميط ListView الذي يطبق GridView

إن عنصر تحكم ListView يحتوي على كائنات ListViewItem التي تمثل عناصر البيانات المعروضة. يمكنك استخدام الخصائص التالية لتعريف النمط والمحتوى الخاصين بعناصر البيانات :

لتجنب مشكلات المحاذاة بين الخلايا في GridView ، لا تستخدم ItemContainerStyle لتعيين خصائص أو إضافة المحتوى الذي يؤثر على عرض إحدى العناصر الموجودة في ListView. على سبيل المثال، يمكن أن تحدث مشكلة محاذاة عند تعيين خاصية Margin في ItemContainerStyle. لتحديد خصائص أو تعريف المحتوى الذي يؤثر على عرض العناصر في GridView ، استخدم الخصائص الخاصة بـفئة GridView و الفئات ذات الصلة به مثل GridViewColumn.

للحصول على مزيد من المعلومات حول كيفية استخدام GridView و فئات الدعم الخاصة به ، راجع نظرة عامة حول GridView.

إذا قمت بتعريف ItemContainerStyle لعنصر تحكم ListView وتعريف أيضاً ItemTemplate ، يجب عليك تضمين ContentPresenter في النمط من أجل ItemTemplate أن يعمل بشكل صحيح.

لا تستخدم خصائص الHorizontalContentAlignment و VerticalContentAlignment التى لمحتوى ListView التي يتم عرضها باستخدام GridView. لتحديد محاذاة المحتوى في عمود منGridView،قم بتعريف ال CellTemplate.

مشاركة نفس وضع العرض

إن عنصرا تحكم ListView لا يمكنهما مشاركة نفس وضع العرض في الوقت نفسه. إذا حاولت استخدام وضع العرض نفسه بأكثر من عنصر تحكم ListView واحد ، سيحدث استثناء.

لتعيين وضع عرض يمكن استخدامه في نفس الوقت بواسطة أكثر من ListView استخدم القوالب أو الأنماط. لمزيد من المعلومات حول كيفية تعريف طرق العرض بالشكل Resources راجع ListView بنماذج طرق عرض متعددة .

إنشاء وضع عرض مخصص

طرق العرض المخصصة مثل GridView مشتقة من فئة ViewBase المجردة والتي توفر الأدوات لعرض عناصر البيانات التي يتم تمثيلها ككائنات ListViewItem .

للحصول على مثال وضع العرض المخصص ، راجع ListView بنموذج طرق عرض مخصصة .

راجع أيضًا:

المرجع

GridView

ListView

ListViewItem

Binding

المبادئ

نظرة عامة حول GridView

أمثلية الأداء: عناصر التحكم

موارد أخرى

مواضيع إجرائية لل ListView