powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Изменить цвет определенных ячеек в datagrid
17 сообщений из 17, страница 1 из 1
Изменить цвет определенных ячеек в datagrid
    #36796588
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть несколько столбцов в 2ух из них значения могут повторятся, а могут не повторятся...как можно сделать так чтобы ячейки, в которых повторяются значения выделялись например красным цветом.
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36796818
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798632
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм спасибо только не совсем разобрался...и я silverlight использую...как я понял мне в интерфейсе надо какимто образом определять нужные мне столбцы и соответсвенно всем ячейками этих столбцов задавать бекграунд...ну вот в этом и вся загвоздка не знаю как сравнить содержимое ячеек нужных мне столбцов внутри интерфейса ivalueconverter
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798703
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тоесть например я знаю как применить к одному полю конвертер, но мен получается надо ко всему гиду применять его патамучто даные изх нескольких столбцов нада конвертировать %)
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798788
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глянь в сторону DataTemplateSelector
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798789
Фотография aleks-sam
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Черт. Не знаю нихрена про SilverLight :)
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798810
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Iber,

1) биндить весь объект (а не одно свойство), тогда в конверторе можно посмотреть значения всех его свойств (чтобы задействовать один конвертор для нескольких конвертаций, можно ему задавать соотв.параметры в биддинге)
2) в класс объекта добавить нужное свойство, можно сразу требуемого типа - тогда и конвертор не понадобится
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798829
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про первое понял, тогда получается мне самому столбцы в xmale не создать? тоесть если я например биндю по одному свойсвту он знает какое свойство в какой созданый мной столбец заталкивать а если я биндю в итем сурс он получается сам столбцы создаст?
про второе совершено не понял, если можно обесните совсем на пальцах пожалуйста.
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798845
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c#
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
    public class FakeData
    {
        public int Col1 { get; set; }
        public int Col2 { get; set; }

        public int Fld1 { get; set; }
        public int Fld2 { get; set; }
        public SolidColorBrush FldColor { get { return new SolidColorBrush(Fld1 == Fld2 ? Colors.Red : Colors.Black); } }
    }
    public class FakeDataColorConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            FakeData obj = value as FakeData;
            if (obj == null) return new SolidColorBrush(Colors.Black);
            return new SolidColorBrush(obj.Col1 == obj.Col2 ? Colors.Red : Colors.Black);
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value;
        }
    }
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void UserControl_Loaded(object sender, RoutedEventArgs e)
        {
            dataGrid1.ItemsSource = new List<FakeData>(){
                new FakeData(){Col1=1,Col2=1,Fld1=2,Fld2=3},
                new FakeData(){Col1=1,Col2=2,Fld1=3,Fld2=3}
            };
        }
    }

xaml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.Resources>
            <src:FakeDataColorConverter x:Key="ColorConverter" />
        </Grid.Resources>
        <sdk:DataGrid AutoGenerateColumns="False" Name="dataGrid1">
            <sdk:DataGrid.Columns>
                <sdk:DataGridTemplateColumn Header="Col1">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Margin="4" Text="{Binding Col1}" Foreground="{Binding Converter={StaticResource ColorConverter}}" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
                <sdk:DataGridTemplateColumn Header="Col2">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Margin="4" Text="{Binding Col2}" Foreground="{Binding Converter={StaticResource ColorConverter}}" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
                <sdk:DataGridTemplateColumn Header="Fld1">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Margin="4" Text="{Binding Fld1}" Foreground="{Binding FldColor}" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
                <sdk:DataGridTemplateColumn Header="Fld2">
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Margin="4" Text="{Binding Fld2}" Foreground="{Binding FldColor}" />
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
            </sdk:DataGrid.Columns>
        </sdk:DataGrid>
    </Grid>

Col1-2 - первый случай
Fld1-2 - второй случай
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798853
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если студия 2010 - в аттаче архив примера (без веб-проекта, здесь ограничения в 150кб)
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798861
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Омагад это то что надо. Огромное спасибо :)
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798873
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку. Предположим, мы хотим обрабатывать ситуации Col1-2, Fld1-2 и еще какие-нить, не связанные с цветом - как различить внутри конвертора что это за ситуация? Очень просто -с помощью параметра(используемого в качестве ключа), например
{Binding Converter={StaticResource ColorConverter}, ConverterParameter=FldColor} - для Fld1-2
{Binding Converter={StaticResource ColorConverter}, ConverterParameter=ColColor} - для Col1-2
и т.д...
а в конверторе
string k = parameter as string;
if(k=="ColColor") return new SolidColorBrush(obj.Col1 == obj.Col2 ? Colors.Red : Colors.Black);
if(k=="FldColor") return new SolidColorBrush(obj.Fld1 == obj.Fld2 ? Colors.Red : Colors.Black);
и т.д...

это я поясняю свои слова "чтобы задействовать один конвертор для нескольких конвертаций, можно ему задавать соотв.параметры в биддинге", на всякий случай ))
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798879
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хых шикарно) зря нельзя плюсовать в карму) единственное не могу понять почему сортировка не работает при выключеном свойсве
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36798899
Iber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хах я нупь...про SortMemberPath забыл)
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36799482
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRВдогонку. Предположим, мы хотим обрабатывать ситуации Col1-2, Fld1-2 и еще какие-нить, не связанные с цветом - как различить внутри конвертора что это за ситуация? Очень просто -с помощью параметра(используемого в качестве ключа), например
{Binding Converter={StaticResource ColorConverter}, ConverterParameter=FldColor} - для Fld1-2
{Binding Converter={StaticResource ColorConverter}, ConverterParameter=ColColor} - для Col1-2
и т.д...
а в конверторе
string k = parameter as string;
if(k=="ColColor") return new SolidColorBrush(obj.Col1 == obj.Col2 ? Colors.Red : Colors.Black);
if(k=="FldColor") return new SolidColorBrush(obj.Fld1 == obj.Fld2 ? Colors.Red : Colors.Black);
и т.д...

это я поясняю свои слова "чтобы задействовать один конвертор для нескольких конвертаций, можно ему задавать соотв.параметры в биддинге", на всякий случай ))Может проще без конвертеров забиндить свойства контролов на свойства вьюмодели, возвращающие соответствующие Brush и т. п. ?
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36799581
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КМожет проще без конвертеров забиндить свойства контролов на свойства вьюмодели, возвращающие соответствующие Brush и т. п. ?чем это проще чем
LR2) в класс объекта добавить нужное свойство, можно сразу требуемого типа - тогда и конвертор не понадобится? (в примере свойство FldColor)

имхо, дело вкуса, главное чтоб работало и у разработчика(ов) мозаика укладывалась в понятную картинку
...
Рейтинг: 0 / 0
Изменить цвет определенных ячеек в datagrid
    #36801734
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRАлексей КМожет проще без конвертеров забиндить свойства контролов на свойства вьюмодели, возвращающие соответствующие Brush и т. п. ?чем это проще чем
LR2) в класс объекта добавить нужное свойство, можно сразу требуемого типа - тогда и конвертор не понадобится? (в примере свойство FldColor)Это я и имел ввиду, невнимательно прочитал.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Изменить цвет определенных ячеек в datagrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]