مقدمهای درباره FluentDataGrid
یکی از قابلیتهای خوب کنترلهای داده مانند DataGrid در WPF، توانایی استایلدهی به سلولها بر اساس مقادیر آنهاست. این ویژگی میتواند در نمایش دادهها به شکل معنادارتر و زیباتر بسیار مفید باشد. در اینجا قصد داریم به شما روشهای مختلف این کار و چگونگی پیادهسازی آنها را نشان دهیم.
استفاده از DataTriggers
یکی از روشهای مرسوم برای استایلدهی به عناصر در WPF، استفاده از DataTriggers میباشد. DataTriggers به شما اجازه میدهند تا بر اساس مقادیر داده، استایلها را به شرطی اعمال کنید.
مراحل پیادهسازی
برای شروع، شما باید DataTemplate خود را تعریف کنید و سپس DataTrigger را در آن استفاده کنید. این کار به شما امکان میدهد هر سلول را بر مبنای ارزش یا مقدار خاص، به صورت دینامیک استایلدهی کنید.
مثالی از پیادهسازی DataTriggers
بیایید با هم نگاه کنیم به یک مثال ساده که چطور میتوانیم با استفاده از DataTriggers به سلولهای یک DataGrid بر اساس مقادیر آنها استایل بدهیم.
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Value" Binding="{Binding Value}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="High">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding Value}" Value="Medium">
<Setter Property="Background" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding Value}" Value="Low">
<Setter Property="Background" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
خط به خط توضیح کد
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
این خط یک DataGrid تعریف میکند و به طور اتوماتیک ستونها را بر اساس دادهها ایجاد نمیکند.
<DataGrid.Columns>
این خط ستونهای سفارشی داخل DataGrid را تعیین میکند.
<DataGridTextColumn Header="Value" Binding="{Binding Value}">
اینجا یک ستون متنی تعریف شده که دادههایش را با استفاده از Binding دریافت میکند.
<DataGridTextColumn.CellStyle>
این خط به ما امکان میدهد تا به سلولهای جداگانه این ستون استایل بدهیم.
<Style TargetType="DataGridCell">
این خط نوع عنصر مورد هدف استایل را تعیین میکند که در اینجا DataGridCell است.
<Style.Triggers>
ایجاد کننده استایلها بر اساس شرایط خاص.
<DataTrigger Binding="{Binding Value}" Value="High">
یک DataTrigger که بررسی میکند آیا مقدار سلول 'High' است یا خیر.
<Setter Property="Background" Value="Red" />
در صورتی که مقدار 'High' باشد، پسزمینه سلول را قرمز میکند.
</DataTrigger>
پایان DataTrigger.