WPF.Кнопка в видимости DataGrid - PullRequest
0 голосов
/ 21 ноября 2018

Как изменить видимость кнопок в DataGrid, если в ячейке строки указан определенный текст?

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Button Click="ConfirmEvent"
                Visibility="if (SensorValueText == "qwerty") Visible"
                Margin="0"  
                Content="" 
                HorizontalAlignment="Stretch" 
                VerticalAlignment="Stretch" 
                IsEnabled="True"/>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Почему вы не создаете новый класс Converter?

class TextToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value.ToString() == "someValue")
        {
            return Visibility.Visible;
        }
        return Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

И затем в xaml вы можете вызвать конвертер:

<local:TextToVisibilityConverter x:Key="TextConverter"/>

Затем вы можете вызвать его внутрикнопка:

<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
    <Button Visibility="{Binding SomeText, Converter={StaticResource 
      TextToVisibilityConverter}}....>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>

Не стесняйтесь спрашивать, есть ли какие-либо последующие действия.

0 голосов
/ 21 ноября 2018

Источник данных выглядит примерно так:

    <DataTemplate>
        <Button Click="ConfirmEvent">
            <Button.Style>
                <Style TargetType="Button">
                    <Setter Property="Visibility" Value="Collapsed"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding SensorValue}" Value="qwerty">
                            <Setter Property="Visibility" Value="Visible"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    </DataTemplate>

Я вижу, что вы используете события там.Следующая проблема, которую вы, вероятно, обнаружите, это выяснение того, в какой строке пользователь нажал кнопку.Имейте в виду, что почти все команды wpf используют шаблон MVVM.С этим вы бы связали команду.Это будет происходить либо в виде модели, используемой для каждой строки, - и вы будете копировать данные в каждую модель представления и обратно.Или Вы можете поместить команду в родительскую модель представления, которая используется как текстовый текст окна, и передать строку в качестве параметра для этого.Пример, который иллюстрирует эти методы: https://gallery.technet.microsoft.com/WPF-Command-and-Row-in-84635e1a

0 голосов
/ 21 ноября 2018

лучше использовать функцию триггера из события onChange () (пример: textbox.onChange ()) и изменить видимость (button.hidden = true / false) внутри функции триггера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...