С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
1

WPF XAML trigger на datagridtextcolumn

25.11.2020, 12:33. Показов 1745. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли сделать триггер на datagridtextcolumn, то есть если условие тригера проходит то добавляется datagridtextcolumn в уже имеющиеся datagridtextcolumn.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2020, 12:33
Ответы с готовыми решениями:

WPF trigger
Можно ли вызвать через trigger обработчик событий?

DataContent на XAML (Wpf)
Не знаю возможно ли такое. Если да - подскажите как. Примеры упрощённые для обучения. Есть...

WPF TabControl через XAML
Доброго всем времени суток. Люди, подскажите, желательно, как через XAML в WPF сделать вкладки у...

Форма регистрации wpf(xaml)
Доброго времени суток всем участникам форума. Кто-нибудь может помочь сделать такую же форму...

22
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.11.2020, 12:44 2
SCAR101, для чего такой костыль нужен ?
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 12:50  [ТС] 3
Почтальон, суть в том что у меня должны меняться колонки исходя из того что сохранено в Properties.Settings. То есть в Properties.Settings есть параметры 1,2,3 и 4 они bool. В дата грид есть колонки ID, FileName и прочие. Если все 4 параметра false, то ничего не меняется. Если например 2 и 4 True, то к существующем колонкам должны прибавиться еще 2 колонки: 2 и 4.
0
Модератор
Эксперт .NET
15857 / 11004 / 2855
Регистрация: 21.04.2018
Сообщений: 32,342
Записей в блоге: 2
25.11.2020, 13:02 4
SCAR101, простыми триггерами это не сделаешь.
Колонки DataGrid - это просто контейнеры для данных.
Это даже не контролы и элементы, они наследуются напрямую от DependecyObject и у них нет стиля, триггеров, шаблона в принципе.
Если посмотрите Динамическое Вязальное Дерево - их там даже не будет.

То что вам нужно - называется "изменить поведение".
Для этого используются AP-свойства, Behavior, Custom Control.
На мой взгляд, проще всего это будет реализовать с AP-свойством (или свойствами).
Но больше это зависит какой из этих инструментов лучше освоен вами и удобнее для вас.
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.11.2020, 13:04 5
Цитата Сообщение от SCAR101 Посмотреть сообщение
суть в том что у меня должны меняться колонки
Не совсем верное решение на мой взгляд, таблицы не должны меняться в "ширину", на то они и таблицы. Здесь я вам не помогу.
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:07  [ТС] 6
Почтальон, Просто у меня в один датагрид по выбору в комбобокс подгружаются разные таблицы, в некоторых таблицах нет некоторых полей, и поэтому мне их надо либо скрывать либо добавлять ))
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.11.2020, 13:10 7
Цитата Сообщение от SCAR101 Посмотреть сообщение
в некоторых таблицах нет некоторых полей, и поэтому мне их надо либо скрывать либо добавлять ))
Для чего ? пустыми колонки нельзя оставить ?

Добавлено через 1 минуту
Цитата Сообщение от SCAR101 Посмотреть сообщение
Просто у меня в один датагрид по выбору в комбобокс подгружаются разные таблицы
Это должно быть источником данных для таблицы, не пришлось бы городить такие костыли с колонками.
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:12  [ТС] 8
Почтальон, так ведь это вообще не очень выглядит )) тем более что в конках этих не просто текст а чекбоксы так как данные в bool, и это может ввести в заблуждение )

Добавлено через 1 минуту
Цитата Сообщение от Почтальон Посмотреть сообщение
Это должно быть источником данных для таблицы, не пришлось бы городить такие костыли с колонками.
тогда придется городить много моделей )) и через условия каким то образом привязывать к коллекции разные модели, даже не представляю как это сделать )
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.11.2020, 13:12 9
Цитата Сообщение от SCAR101 Посмотреть сообщение
так ведь это вообще не очень выглядит ))
Думаете ваш способ красивее ? Я уже писал про источник данных, у таблицы он один. Заполняете этот источник данных нужными данными - колонки сами добавляются.
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:15  [ТС] 10
Почтальон, в том то и дело что есть модель в которой есть ID, FileName........1,2,3,4. И если я подгружаю таблицу в которой есть все эти колонки то все гуд, а если таблицу где нет 1,2 и 4 колонки, то они все равно отображаются все, только в 1,2 и 4 колонках получаются пустые чекбоксы
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.11.2020, 13:22 11
На мой взгляд нужно было делать родительский класс, и наследоваться от него другим двум классам , тогда типом коллекции мог выступать родительский класс.
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:35  [ТС] 12
Почтальон, не совсем прокатит, точнее может и прокатит но это будет очень много классов) Есть таблица, в которой есть поля ID, FileName.....1,2,3,4. В программе я сделал настройки в которых пользователь может активировать 1,2,3 и 4. И вот если он активировал только 3 и 4 то и отображаться должны только ID, FileName.....3,4. Плюс есть и вторая таблица в которой нет колонок 1,2,3,4 и соответсвенно должно отображаться только ID, FileName....

Добавлено через 31 секунду
Почтальон, Просто вариантов что именно активирует пользователь может быть много )

Добавлено через 1 минуту
Почтальон, и на каждый вариант создавать свой класс это глупо )) должно быть как то динамически все это )
0
178 / 93 / 25
Регистрация: 04.02.2016
Сообщений: 298
Записей в блоге: 3
25.11.2020, 13:47 13
SCAR101, а таблица отображает только один элемент? Или это могут быть несколько строк, у которых разные значения ([1,2,3] и [2,4], например)?
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:48  [ТС] 14
Цитата Сообщение от Hugonavy Посмотреть сообщение
а таблица отображает только один элемент? Или это могут быть несколько строк, у которых разные значения ([1,2,3] и [2,4], например)?
не совсем понял про что вы ?
0
178 / 93 / 25
Регистрация: 04.02.2016
Сообщений: 298
Записей в блоге: 3
25.11.2020, 13:52 15
Цитата Сообщение от SCAR101 Посмотреть сообщение
не совсем понял про что вы ?
Ну у Вас есть модель данных таблицы - ID, FileName.....1,2,3,4

Таблица заполняется:
1 Name1 true true false true
2 Name2 false true true false
3 Name3 false false false true

Как Вы предполагаете вывести этот массив в таблицу с разными колонками?
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:55  [ТС] 16
Hugonavy, выводится все, суть в том как это отобразится )) если например пользователь выбрал только 3 и 4 то 1 и 2 отображаться не будет
0
управление сложностью
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
25.11.2020, 13:56 17
Цитата Сообщение от SCAR101 Посмотреть сообщение
и на каждый вариант создавать свой класс это глупо ))
Цитата Сообщение от SCAR101 Посмотреть сообщение
Просто вариантов что именно активирует пользователь может быть много )
Глупо городить костыли, которые вы сейчас изобретаете, мыслите в парадигме ООП. Вы должны сделать класс представления для ваших данных. Ладно, я покидаю топик, решайте задачу как хотите.
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 13:57  [ТС] 18
вот если делать CB то это будет так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void dgTableLeft_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            if(Properties.Settings.Default.IPBrio1Check == false)
            {
                dgTableLeft.Columns[9].Visibility = Visibility.Collapsed;
            }
            if (Properties.Settings.Default.IPBrio2Check == false)
            {
                dgTableLeft.Columns[10].Visibility = Visibility.Collapsed;
            }
            if (Properties.Settings.Default.IPBrio3Check == false)
            {
                dgTableLeft.Columns[11].Visibility = Visibility.Collapsed;
            }
            if (Properties.Settings.Default.IPBrio4Check == false)
            {
                dgTableLeft.Columns[12].Visibility = Visibility.Collapsed;
            }
        }
Добавлено через 1 минуту
вопрос в том как это сделать mvvm или путем xaml ?
0
178 / 93 / 25
Регистрация: 04.02.2016
Сообщений: 298
Записей в блоге: 3
25.11.2020, 13:59 19
Цитата Сообщение от SCAR101 Посмотреть сообщение
если например пользователь выбрал только 3 и 4 то 1 и 2 отображаться не будет
Да как оно не будет отображаться? Вы понимаете, что такое таблица? Заголовки столбцов - это ваша модель. Если в одной строке выбрано одно, а в другой другое - столбцы все равно будут все, просто где-то ячейки будут пустыми, например. Или checkbox туда поставьте и он будет уже либо нажат, либо нет
0
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 14:09  [ТС] 20
Hugonavy, вы не поняли суть программы, 1,2,3 и 4 в таблице это сервера, и значение это наличие файла на сервере то есть тру или фолс. В настройках программы пользователь выбирает какие сервера он использует, то есть допустим только 3 и 4. и Если так то отображаться будут только 3 и 4 сервер

Добавлено через 29 секунд
Hugonavy, всего серверов может быть 4 так как это жестко прописано в таблице в бд

Добавлено через 1 минуту
Hugonavy, выше я привет код как бы я это сделал в CB, вот вопрос как это сделать в mvvm
0
25.11.2020, 14:09
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2020, 14:09
Помогаю со студенческими работами здесь

Видеоплеер WPF, XAML и MediaElement
Всем доброго времени суток) Не судите строго, новичок в этой теме. Реализую видеоплеер на основе...

WPF: порядок атрибутов в XAML
Есть 'DataGrid', у его строк есть контекстное меню: <ContextMenu x:Key="ItemsRowMenu"> ...

Сериализация xaml wpf пример
Подскажите пожалуйста как сохранить ListBox который создан в XAML а потом из него запустить...

WPF XAML Datagrid Super Header
Народ помогите сделать Super Header для моего Datagrid как показано на картинке (прилагаю). <Window...

WPF TextBox - Ссылка на класс в XAML
<TextBox ref:TextBoxAutomaticScrollingExtension.ScrollOnTextChanged="True"...

WPF! XAML template via DevExpress Grid
Добрый день уважаемы коллеги программисты, Помогите роздуплить как сделать одну задачку для когото...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru