В DataGrid добавить кнопки

141
22 января 2020, 14:10

Делаю проект в котором отображается таблица и в последней колонке в зависимости от данных в таблице sql планировал или текст или кнопка, если в базе значение null то отображается кнопка если есть какойто текст то вывести этот текст. Использую автогенерацию колонок AutoGenerateColumns=true. все что находил в интернете не работает, возможно ли такое сделать? Если да подскажите метод

Answer 1

Используйте TemplateSelector - позволяет выбирать темплейты в зависемости от данных, которые находятся в моделе.

Answer 2

Сделал следующим образом

 <Window.Resources>
            <local:StatusConverter x:Key="StatusConverter"></local:StatusConverter>
</Window.Resources>
<DataGridTemplateColumn.CellTemplate>
                        <DataTemplate >
                            <StackPanel Orientation="Horizontal">
                                <Button Name="btn1" Content="Отметить" Width="145" HorizontalAlignment="Center" Click="containerEntry" Background="LightGreen"
                                    Visibility="{Binding Status,Converter={StaticResource StatusConverter},ConverterParameter=a}"></Button>
                                <TextBlock Name="btn2"  Text="{Binding DateIn, StringFormat={}{0:dd.MM.yyyy HH:mm}}" Width="150"
                                    Visibility="{Binding Status,Converter={StaticResource StatusConverter},ConverterParameter=b}"></TextBlock>
                            </StackPanel>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>

конвертер

class StatusConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            GridContainer result = new GridContainer();
            StatusEnum status = (StatusEnum)value;
            string param = parameter as string;
            if ((status == StatusEnum.Success && param == "a") || (status == StatusEnum.Failed && param == "b"))
            {
                return Visibility.Visible;
            }
            else
            {
                return Visibility.Collapsed;
            }
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

    enum StatusEnum
    {
        Success,
        Failed            
    }
}
READ ALSO
Для чего существует FORCE_DWORD

Для чего существует FORCE_DWORD

Смотря на заголовки COM, очень часто замечаю что у большинства enum присутствует значение FORCE_DWORD = 0xffffffff

138
Описание входных параметров HoughCircles()

Описание входных параметров HoughCircles()

Пытаюсь приспособить метод HoughCircles() не для поиска кругов, а для пикселей нужного мне цвета на картинкеНе могу понять, за что отвечают входные...

134
Как определить свободный COM порт

Как определить свободный COM порт

На компьютере в реестре по следующему пути HKLM:\HARDWARE\DEVICEMAP\SERIALCOMM прописаны два устройства \Device\Serial0 и \Device\Serial1 Следовательно они привязаны каждый...

186
Ошибка при попытке создать миграцию в консоли диспетчера задач

Ошибка при попытке создать миграцию в консоли диспетчера задач

Не могу создать миграцию в WebApi Обновил PowerShell но вылезла другая ошибка вот она:

176