مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

amiramir

عضویت از 1393/10/10

تغییر رنگ یک سطر از دیتاگرید در WPF

  • یکشنبه 14 آبان 1396
  • 16:09
تشکر میکنم

با عرض سلام،ادب و احترام

من می خواهم با لود شدن فرمم(با توجه به تصویر ضمیمه)،سطری از دیتاگرید که کدپرواز آن 20 است،سبز شود.

چطور می توانم این کار را انجام دهم؟

سپاسگزارم

پاسخ های این پرسش

تعداد پاسخ ها : 4 پاسخ
کاربر سایت

سجاد باقرزاده

عضویت از 1392/02/24

  • یکشنبه 14 آبان 1396
  • 17:25

سلام

برای این کار می بایست از DataTrigger  استفاده کنید، در ادامه برای شما یک مثال قرار میدهم تا موضوع را کامل شرح دهم :

CSharp Code :

    public partial class Window2 : Window
    {
        public Window2()
        {
            InitializeComponent();
            GrdList.ItemsSource = new List<Person>()
            {
             new Person(){Code = 7 , Name = "رشت"} ,
             new Person(){Code = 20 , Name = "رشت"} ,
             new Person(){Code = 25 , Name = "کیش"} ,
             new Person(){Code = 27 , Name = "کرمان"} ,
             new Person(){Code = 20 , Name = "مشهد"} ,
             new Person(){Code = 29 , Name = "قشم"} ,
            };
        }
    }

    internal class Person
    {
        public int Code { get; set; }
        public string Name { get; set; }
    }

XAML :

<Window x:Class="WpfApplication10.Window2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window2" Height="300" Width="300" FlowDirection="RightToLeft" WindowStartupLocation="CenterScreen">
    <Grid>
        <DataGrid Name="GrdList" AutoGenerateColumns="False">
            <DataGrid.Resources>
                <Style TargetType="DataGridRow">
                    <Setter Property="Background" Value="Black"/>
                    <Setter Property="Foreground" Value="White"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Code}" Value="20">
                            <Setter Property="Background" Value="GreenYellow"/>
                            <Setter Property="Foreground" Value="Black"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </DataGrid.Resources>
            <DataGrid.Columns>
                <DataGridTextColumn Binding="{Binding Code}" Width="*" Header="کد پرواز"></DataGridTextColumn>
                <DataGridTextColumn Binding="{Binding Name}" Width="*" Header="مبدا"></DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

نتیجه کار :

کاربر سایت

amiramir

عضویت از 1393/10/10

  • دوشنبه 15 آبان 1396
  • 08:36

بابت پاسخگویی تان سپاسگزارم

ولی من سوالم را بد مطرح کردم و منظور اصلی خودم را نرساندم.

سوالم را این گونه می پرسم:من می خواهم با زدن یک دکمه،سطری از دیتاگرید که کدپرواز آن 20 است،سبز شود.چگونه این کار را انجام دهم؟

سپاسگزارم

کاربر سایت

aliali3000

عضویت از 1393/04/02

  • دوشنبه 15 آبان 1396
  • 13:44

میتونید از این کد استفاده کنید. احتمالا براتون مفید باشه:

e.Column.CellStyle = new Style(typeof(DataGridCell));
    e.Column.CellStyle.Setters.Add(new Setter(DataGridCell.BackgroundProperty,  new SolidColorBrush(Colors.LightBlue)));

کاربر سایت

amiramir

عضویت از 1393/10/10

  • دوشنبه 15 آبان 1396
  • 14:50

بابت پاسخ تون مممنونم

ولی column رو نمیشناسه و با زیگزاگ قرمز نشون می ده!!!

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)