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

WPF XAML trigger на datagridtextcolumn

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

Студворк — интернет-сервис помощи студентам
Возможно ли сделать триггер на 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 сделать вкладки у TAbControl другой формы. Или приведите...

22
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16165 / 11285 / 2891
Регистрация: 21.04.2018
Сообщений: 33,174
Записей в блоге: 2
25.11.2020, 14:18
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SCAR101 Посмотреть сообщение
вопрос в том как это сделать mvvm или путем xaml ?
Я уже вас сказал создайте AP-свойство или Behavior.
Колонки - это не свойства. И вы не можете в XAML управлять ими.

Для универсальности можете создать для коллекции дополнительный интерфейс описывающий какие надо визуализировать колонки и с какими привязками.
Добавьте этот интерфейс в коллекцию-источник.
И в своём AP-cвойстве или Behavior проверяйте у коллекции наличие этого интерфейса.
0
180 / 95 / 25
Регистрация: 04.02.2016
Сообщений: 308
Записей в блоге: 3
25.11.2020, 14:22
Лучший ответ Сообщение было отмечено SCAR101 как решение

Решение

Если Вам надо просто скрывать/показывать столбец, то дело упрощается (вопрос задан изначально крайне некорректно)

Если вкрадце, создаете 2 класса следующего содержания:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class BindingProxy : Freezable
    {
        public static readonly DependencyProperty DataProperty =
           DependencyProperty.Register("Data", typeof(object),
              typeof(BindingProxy));
 
        public object Data
        {
            get { return GetValue(DataProperty); }
            set { SetValue(DataProperty, value); }
        }
 
        #region Overrides of Freezable
 
        protected override Freezable CreateInstanceCore()
        {
            return new BindingProxy();
        }
 
        #endregion
    }
и
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[ValueConversion(typeof(bool), typeof(Visibility))]
    public sealed class BooleanToVisibilityConverter : IValueConverter
    {
        public bool IsReversed { get; set; }
        public bool UseHidden { get; set; }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            var val = System.Convert.ToBoolean(value, CultureInfo.InvariantCulture);
            if (this.IsReversed)
            {
                val = !val;
            }
            if (val)
            {
                return Visibility.Visible;
            }
            return this.UseHidden ? Visibility.Hidden : Visibility.Collapsed;
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
В XAML добавляете папку с их расположением в шапке окна (контрола или чего угодно)

XML
1
xmlns:config="clr-namespace:YourAppName.Config"
А в ресурсах пишем это

XML
1
<BooleanToVisibilityConverter x:Key="boolToVis" />
Далее в DataGrid пишем примерно так
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    <DataGrid Name="dgData"
                  ItemsSource="{Binding SourceArray}" AutoGenerateColumns="False">
            <DataGrid.Resources>
                <config:BindingProxy x:Key="proxy" Data="{Binding}"/>
            </DataGrid.Resources>
            <DataGrid.Columns>
                <DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
                <!--Еще какие-то колонки-->
                <DataGridTextColumn Header="FirstBoolItem" Binding="{Binding FirstBoolItem}"
                                    Visibility="{Binding Data.FirstItem, Converter={StaticResource boolToVis},
                                    Source={StaticResource proxy}}"/>
                <DataGridTextColumn Header="SecondBoolItem" Binding="{Binding SecondBoolItem}"
                                    Visibility="{Binding Data.SecondItem, Converter={StaticResource boolToVis},
                                    Source={StaticResource proxy}}"/>
                <!--И т.д.-->
            </DataGrid.Columns>
        </DataGrid>
Далее в VM создаете переменные для каждого скрываемого столбца:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private bool _firstItem;
public bool FirstItem
{
    get => _firstItem;
    set { _firstItem = value; OnPropertyChanged(); }
}
 
private bool _secondItem;
public bool SecondItem
{
    get => _secondItem;
    set { _secondItem= value; OnPropertyChanged(); }
}
Присваивая им значение true/false столбцы будут скрываться или появляться. И не забудьте про реализацию INPC для класса VM
3
5 / 5 / 3
Регистрация: 24.05.2015
Сообщений: 382
25.11.2020, 14:26  [ТС]
Hugonavy, воо спасибо ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2020, 14:26

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

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

WPF: порядок атрибутов в XAML
Есть 'DataGrid', у его строк есть контекстное меню: &lt;ContextMenu x:Key=&quot;ItemsRowMenu&quot;&gt; &lt;MenuItem Header=&quot;Menu Item 1&quot;...

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

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


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru