تغییر رنگ یک سطر یا متن در DataGrid در WPF با اعمال شرط
سلام خسته نباشید.
ببخشید من داخل WPF یک data gridView دارم که اطلاعات خودشو از دیتابیس میگیره.
الان میخوام روی این اطلاعات که از دیتابیس میاد شرط بزارم.
مثلا اطلاعات که از دیتابیس از فیلد TotalCost میاد اگر کوچکلتر از 500 بود بیاد کل اون سطر را یا رنگ نوشته هاش یا بک گروند را به قرمز تبدیل کنه.
و اگر ازین بزرگتر بود یه رنگ دیگه ای.
گوگل هرچه سرچ کردم از ویندوز فرم بود ولی متاسفانه از WPF چیزی ندیدم ممنون میشم راهنمایی کنید.
پاسخ هوش مصنوعی
برای تغییر رنگ یک سطر در DataGrid بر اساس شرط خاصی در WPF، می توانید از DataTrigger
استفاده کنید. در این مثال، فرض کنید که سطر شما اطلاعاتی را از یک شی به نام Item
دریافت می کند که دارای خاصیت TotalCost
است.
در ادامه یک نمونه کد برای این کار آورده شده است:
در این کد:
- به کمک
DataTrigger
بررسی می شود که آیا مقدارTotalCost
کوچکتر یا بزرگتر از 500 است. - اگر
TotalCost
کوچکتر از 500 باشد، رنگ پس زمینه سطر قرمز و رنگ متن سفید خواهد بود. - اگر بزرگتر یا مساوی 500 باشد، رنگ پس زمینه سطر سبز و رنگ متن سیاه خواهد بود.
با استفاده از این روش می توانید ایجاد یک رابط کاربری پویا و جذاب در WPF داشته باشید.
سلام دوست گرامی
شما چون شرطی که میخواهید اعمال کنید حالت محاسباتی داره باید ابتدا داخل دیتابیس و ویوی خودتون یک فیلد بسازید و شرط خودتون رو اونجا روی فیلد اعمال کنید و خروجی رو به صورت صفر و یک یا یک عدد دریافت کنید. برای اینکار در 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 کل ردیف سبز بشه
می توانید از کنترل های همگام سازی WPF Datagrid استفاده کنید.
https://www.syncfusion.com/wpf-controls/datagrid
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول