در این پست قصد دارم طریقه ایجاد ردیفهای رنگی به صورت یک در میان در ListBox رو در WPF توضیح بدم . این عمل برای یکسری از برنامه ها بسیار جالب توجه است . حالا ابتدا یک پروژه WPF 

ایجاد کنید . 

  

حالا یک Listbox به فرم اضافه کنید . 

 

حالا یه کمی کد به Listbox اضافه می کنیم  :

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Collections.ObjectModel;

 

 

 

namespace Alternate_Rows_in_ListBox

{

    public class Person

    {

        public string Name { getset; }

        public int Age { getset; }

        public string Country { getset; }

    }

   

    public partial class MainWindow : Window

    {

        ObservableCollection<Person> myList;

        public MainWindow()

        {

            InitializeComponent();

            myList = new ObservableCollection<Person>()

            {

                new Person{ Name="Name 1", Age=24, Country="India"},

                new Person{ Name="Name 2", Age=24, Country="India"},

                new Person{ Name="Name 3", Age=24, Country="India"},

                new Person{ Name="Name 4", Age=24, Country="India"},

                new Person{ Name="Name 5", Age=24, Country="India"},

                new Person{ Name="Name 6", Age=24, Country="India"},

                new Person{ Name="Name 7", Age=24, Country="India"},

                new Person{ Name="Name 8", Age=24, Country="India"},

                new Person{ Name="Name 9", Age=24, Country="India"},

                new Person{ Name="Name 10", Age=24, Country="India"},

                new Person{ Name="Name 11", Age=24, Country="India"},

                new Person{ Name="Name 12", Age=24, Country="India"},

                new Person{ Name="Name 13", Age=24, Country="India"},

                new Person{ Name="Name 14", Age=24, Country="India"},

                new Person{ Name="Name 15", Age=24, Country="India"},

                new Person{ Name="Name 16", Age=24, Country="India"},

                new Person{ Name="Name 17", Age=24, Country="India"},

                new Person{ Name="Name 18", Age=24, Country="India"},

                new Person{ Name="Name 19", Age=24, Country="India"},

                new Person{ Name="Name 20", Age=24, Country="India"},

                new Person{ Name="Name 21", Age=24, Country="India"},

                new Person{ Name="Name 22", Age=24, Country="India"},

            };

            listBox1.ItemsSource = myList;

        }

    }

}

 

 

خوب کد در این قسمت بسیار ساذه هست ، اول یک کلاس ایجاد کردیم ، بعد اون رو مقدار دهی کردیم ، اما مهمترین قسمت کد استفاده از کلاس ( ObservableCollection) است ، هدف استفاده از این کلاس این است که شما بتوانید داده های یک شی Collection رو به صورت پویا در برنامه استفاده کنید ، مانند این که شما وقتی یک رکورد رو از Listbox حذف یا اضافه کنید  و در اینجا هم  ، ما کلاس Person رو به عنوان ورودی به شی  (ObservableCollection) می فرستیم . حالا در قسمت بعد باید property  ، Name رو به listbox مرتبط کنیم: 

 

<ListBox x:Name="lbPersonList" Margin="19,17,162,25">

            <ListBox.ItemTemplate>

                <DataTemplate>

                    <TextBlock Text="{Binding Name}"/>

                DataTemplate>

            ListBox.ItemTemplate>

ListBox>

 


 

 همان طور که می بینید ، هیچ فرقی در پس زمینه listbox نکرده است ، حالا ما می خواهیم  listboxرو دو رنگ کنیم : 

  

  

<Window.Resources>

        <Style  TargetType="{x:Type ListBoxItem}">

            <Style.Triggers>

                <Trigger Property="ItemsControl.AlternationIndex" Value="0">

                    <Setter Property="Background" Value="#19f39611">Setter>

                Trigger>

                <Trigger Property="ItemsControl.AlternationIndex" Value="1">

                    <Setter Property="Background" Value="#19000000">Setter>

                Trigger>

            Style.Triggers>

        Style>

Window.Resources>

 

 

در این قست ابتدا از<Window.Resources> استفاده کرده ایم تا بتوانیم تمام تغییرات را بر روی صفحه مورد نظر اعمال کنیم و در بعد هم از Style ها و Trigger ها برای مشخص کردن رنگ ردیف listbox استفاده کرده ایم .

و در بعد هم property  ، مخصوص به alternationcount رو برابر 2 می کنیم . .

 

<ListBox HorizontalAlignment="Left" Margin="22,12,0,12" Name="listBox1" Width="273" Grid.ColumnSpan="2" AlternationCount="2">

 

همچنین شما می توانید به مقدار alternationcount اضافه کنید ، که در این صورت باید رنگهای بیشتری تنظیم کنید . خوب ! به پایان این مقاله رسیدیم  ، امیدوارم که این مطلب به شما برنامه نویسان کمک کرده باشد . اگر سوالی در مورد این مطلب داشتید در همین پست بیان کنید یا از طریق ایمیل عنوان کنید . 

موفق باشید ......