70٪ تخفیف ویژه جشنواره تابستانه توسینسو
پایان تخفیف تا:
مشاهده دوره‌ها
0

تغییر رنگ سطرهای دیتا گرید با کدنویسی در wpf

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

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

سپاسگزارم

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

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

سپاسگزارم
||https://tosinso.com/files/get/fcd6f248-ce71-4a27-986a-0d9d50d10e31||
پرسیده شده در 1396/08/15 توسط

3 پاسخ

1

سلام به شما دوست عزیز

برای این کار شما باید رنگ پس زمینه گرید خودتان را به یک آیتم 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 بود قرمز و بقیه سبز خواهد بود.

پاسخ در 1396/08/15 توسط
0

سلام وقت بخیر میتونید در radgridview و datagrid از متد rowloaded استفاده کنید 

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

Mehram.khodayari20@gmail.com

پاسخ در 1399/01/28 توسط
0

بابت پاسخگویی تان بی نهایت سپاسگزارم.پاسخ کاملی بود

برنامه من به گونه ای است که باید از کدهای سی شارپ برای انجام این کار استفاده کنم.این روش مرا محدود می کند.

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

ممنونم

پاسخ در 1396/08/15 توسط

پاسخ شما