تغییر رنگ سطرهای دیتا گرید با کدنویسی در wpf
با عرض سلام،ادب و احترام
من با wpf کار می کنم و می خواهم با زدن یک دکمه،سطری از دیتاگرید زیر که کدپرواز آن 20 است،سبز شود.چگونه این کار را انجام دهم؟
سپاسگزارم
3 پاسخ
سلام به شما دوست عزیز
برای این کار شما باید رنگ پس زمینه گرید خودتان را به یک آیتم bind کنید. برای مثال در کد زیر من یک گرید دارم که رنگ پس زمینه آن را به یک آیتم به نام State بایند کردم حالا در داخل برنامه اگر مقدار state برابر true باشد پس رنگ من قرمز و اگر false باشد رنگ سطر من سبز خواهد بود.
<DataGrid x:Name="dataGrid1" HorizontalAlignment="Left" Height="228" Margin="52,36,0,0" VerticalAlignment="Top" Width="418" > <DataGrid.RowStyle> <Style TargetType="DataGridRow"> <Style.Triggers> <DataTrigger Binding="{Binding State}" Value="true"> <Setter Property="Background" Value="Red"></Setter> </DataTrigger> <DataTrigger Binding="{Binding State}" Value="false"> <Setter Property="Background" Value="Green"></Setter> </DataTrigger> </Style.Triggers> </Style> </DataGrid.RowStyle> </DataGrid>
حالا من توی قسمت سی شارپم توی هر آیتمی که ست می کنم state رو هم مقدار دهی می کنم. برای مثال کد زیر
authors = new List<Author>(); authors.Add(new Author { ID = 101, Name = "Mahesh Chand", BookTitle = "Graphics Programming with GDI+", DOB = new DateTime(1975, 2, 23), IsMVP = false, State = false }); authors.Add(new Author { ID = 201, Name = "Mike Gold", BookTitle = "Programming C#", DOB = new DateTime(1982, 4, 12), IsMVP = true , State = true }); authors.Add(new Author { ID = 244, Name = "Mathew Cochran", BookTitle = "LINQ in Vista", DOB = new DateTime(1985, 9, 11), IsMVP = true , State = false }); dataGrid1.ItemsSource = authors; }
حال اگر اجرا کنم رنگ آیتمی که State آن true بود قرمز و بقیه سبز خواهد بود.
سلام وقت بخیر میتونید در radgridview و datagrid از متد rowloaded استفاده کنید
برای راهنمایی بیشتر هم میتونید با من تماس بگیرید
Mehram.khodayari20@gmail.com
بابت پاسخگویی تان بی نهایت سپاسگزارم.پاسخ کاملی بود
برنامه من به گونه ای است که باید از کدهای سی شارپ برای انجام این کار استفاده کنم.این روش مرا محدود می کند.
حالا همین کار را می خواهم با کدهای سی شارپ انجام دهم.چطور می توانم این کار را انجام دهم؟یعنی با زدن یک دکمه،سطری از دیتاگرید که کدپرواز آن 20 است،سبز شود.
ممنونم