دسته بندی ها
18:27 1400/03/13

تغییر رنگ یک سطر یا متن در DataGrid در WPF با اعمال شرط

مشخصات سوال کننده :
کاربر : yaser050     امتیاز کاربر : 6     رتبه کاربر : 80
دسته بندی : سی شارپ WPF

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4087
هوش مصنوعی

پاسخ هوش مصنوعی

برای تغییر رنگ یک سطر در DataGrid بر اساس شرط خاصی در WPF، می توانید از DataTrigger استفاده کنید. در این مثال، فرض کنید که سطر شما اطلاعاتی را از یک شی به نام Item دریافت می کند که دارای خاصیت TotalCost است.

در ادامه یک نمونه کد برای این کار آورده شده است:



    
        
        
    
    
        
    

در این کد:

  • به کمک DataTrigger بررسی می شود که آیا مقدار TotalCost کوچکتر یا بزرگتر از 500 است.
  • اگر TotalCost کوچکتر از 500 باشد، رنگ پس زمینه سطر قرمز و رنگ متن سفید خواهد بود.
  • اگر بزرگتر یا مساوی 500 باشد، رنگ پس زمینه سطر سبز و رنگ متن سیاه خواهد بود.

با استفاده از این روش می توانید ایجاد یک رابط کاربری پویا و جذاب در WPF داشته باشید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Sowgandi 09:55 1400/03/14

سلام دوست گرامی

شما چون شرطی که میخواهید اعمال کنید حالت محاسباتی داره باید ابتدا داخل دیتابیس و ویوی خودتون یک فیلد بسازید و شرط خودتون رو اونجا روی فیلد اعمال کنید و خروجی رو به صورت صفر و یک یا یک عدد دریافت کنید. برای اینکار در Sql Server از دستور select case استفاده کنید.

(select case when TotalCost > 500 then 1 when TotalCost < 500 then 2 end) as ColorID

در کد فوق ما گفتیم اگر مقدار TotalCost بزرگتر از 500 بود عدد 1 و اگر کوچکتر از 500 بود عدد 2 رو نمایش بده و نام این فیلد رو ColorID گذاشتیم. 

حالا وارد نرم افزارتون بشید و در قسمت تگ دیتاگرید خودتون از کد <DataGrid.RowStyle> مطابق نمونه زیر استفاده کنید.

    <DataGrid x:Name="MyDataGrid" IsReadOnly="True" Width="600" Height="400">
            
            <DataGrid.RowStyle>
                <Style TargetType="DataGridRow">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding ColorID}" Value="1">
                            <Setter Property="Background" Value="Red" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding ColorID}" Value="2">
                            <Setter Property="Background" Value="Green" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.RowStyle>
            
        </DataGrid>

توی کد بالا گفتیم که اگر مقدار فیلد ColorID برابر بود با عدد 1 کل ردیف قرمز بشه و اگر برابر بود با عدد 2 کل ردیف سبز بشه

ویرایش شده در جمعه 14 خرداد 1400 ساعت 10:03:12
به این پاسخ امتیاز بدهید    3
امتیاز: 876 رتبه: 3
1 نظر
yaser050 : واقعا ممنون دست شما درد نکنه. تست مکینم

امتیاز کاربر : 6   رتبه کاربر : 80   تاریخ ثبت : 04:45 1400/03/14
پاسخ دهنده : Arun 20:26 1400/06/14

می توانید از کنترل های همگام سازی WPF Datagrid استفاده کنید.
https://www.syncfusion.com/wpf-controls/datagrid

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7066
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود