Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Изменить цвет определенных ячеек в datagrid / 17 сообщений из 17, страница 1 из 1
17.08.2010, 21:19
    #36796588
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
есть несколько столбцов в 2ух из них значения могут повторятся, а могут не повторятся...как можно сделать так чтобы ячейки, в которых повторяются значения выделялись например красным цветом.
...
Рейтинг: 0 / 0
18.08.2010, 04:16
    #36796818
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
...
Рейтинг: 0 / 0
18.08.2010, 18:25
    #36798632
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
хм спасибо только не совсем разобрался...и я silverlight использую...как я понял мне в интерфейсе надо какимто образом определять нужные мне столбцы и соответсвенно всем ячейками этих столбцов задавать бекграунд...ну вот в этом и вся загвоздка не знаю как сравнить содержимое ячеек нужных мне столбцов внутри интерфейса ivalueconverter
...
Рейтинг: 0 / 0
18.08.2010, 18:50
    #36798703
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
тоесть например я знаю как применить к одному полю конвертер, но мен получается надо ко всему гиду применять его патамучто даные изх нескольких столбцов нада конвертировать %)
...
Рейтинг: 0 / 0
18.08.2010, 19:44
    #36798788
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Глянь в сторону DataTemplateSelector
...
Рейтинг: 0 / 0
18.08.2010, 19:45
    #36798789
aleks-sam
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Черт. Не знаю нихрена про SilverLight :)
...
Рейтинг: 0 / 0
18.08.2010, 20:09
    #36798810
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Iber,

1) биндить весь объект (а не одно свойство), тогда в конверторе можно посмотреть значения всех его свойств (чтобы задействовать один конвертор для нескольких конвертаций, можно ему задавать соотв.параметры в биддинге)
2) в класс объекта добавить нужное свойство, можно сразу требуемого типа - тогда и конвертор не понадобится
...
Рейтинг: 0 / 0
18.08.2010, 20:27
    #36798829
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
про первое понял, тогда получается мне самому столбцы в xmale не создать? тоесть если я например биндю по одному свойсвту он знает какое свойство в какой созданый мной столбец заталкивать а если я биндю в итем сурс он получается сам столбцы создаст?
про второе совершено не понял, если можно обесните совсем на пальцах пожалуйста.
...
Рейтинг: 0 / 0
18.08.2010, 20:45
    #36798845
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
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
18.08.2010, 20:51
    #36798853
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Если студия 2010 - в аттаче архив примера (без веб-проекта, здесь ограничения в 150кб)
...
Рейтинг: 0 / 0
18.08.2010, 21:01
    #36798861
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Омагад это то что надо. Огромное спасибо :)
...
Рейтинг: 0 / 0
18.08.2010, 21:09
    #36798873
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Вдогонку. Предположим, мы хотим обрабатывать ситуации 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
18.08.2010, 21:15
    #36798879
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
хых шикарно) зря нельзя плюсовать в карму) единственное не могу понять почему сортировка не работает при выключеном свойсве
...
Рейтинг: 0 / 0
18.08.2010, 21:37
    #36798899
Iber
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
хах я нупь...про SortMemberPath забыл)
...
Рейтинг: 0 / 0
19.08.2010, 10:42
    #36799482
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
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
19.08.2010, 11:16
    #36799581
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменить цвет определенных ячеек в datagrid
Алексей КМожет проще без конвертеров забиндить свойства контролов на свойства вьюмодели, возвращающие соответствующие Brush и т. п. ?чем это проще чем
LR2) в класс объекта добавить нужное свойство, можно сразу требуемого типа - тогда и конвертор не понадобится? (в примере свойство FldColor)

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


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