ایجاد ردیفهای رنگی به صورت یک در میان در ListBox
در این پست قصد دارم طریقه ایجاد ردیفهای رنگی به صورت یک در میان در 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 { get; set; }
public int Age { get; set; }
public string Country { get; set; }
}
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 اضافه کنید ، که در این صورت باید رنگهای بیشتری تنظیم کنید . خوب ! به پایان این مقاله رسیدیم ، امیدوارم که این مطلب به شما برنامه نویسان کمک کرده باشد . اگر سوالی در مورد این مطلب داشتید در همین پست بیان کنید یا از طریق ایمیل عنوان کنید .
موفق باشید ......