Форма Xamarin — как установить флажок на другом флажке, отмеченном в UWP

Мое приложение отображает права доступа к DataGrid из базы данных. Для реализации этого я использую MyToolkit.Controls.DataGrid. Теперь я хочу, чтобы вывод был, если пользователь установил флажок «Администратор» или «Обновить/удалить/создать», затем флажок «Просмотр и список» был установлен наоборот, а также я хочу установить значение флажка из базы данных. заранее спасибо.

Изображение

Форма Xamarin — как установить флажок на другом флажке, отмеченном в UWP

если пользователь проверил создание/обновление/удаление, тогда тот же список строк и представление должны быть отмечены флажком

Форма Xamarin — как установить флажок на другом флажке, отмеченном в UWP

если пользователь установил флажок просмотра, то список столбцов выбранной строки должен быть проверен

Форма Xamarin — как установить флажок на другом флажке, отмеченном в UWP

XML-код сетки данных

  <Toolkit:DataGrid.Columns  >
            <!--Feature Column-->
            <Toolkit:DataGridTemplatedColumn CanSort = "False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <TextBlock FontSize = "16" Foreground = "#000000" Width = "280" Text = "Feature" />
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <TextBlock FontSize = "14" Padding = "6 0 0 0" Foreground = "#333333"   Width = "280" Text = "{Binding featureName}"/>
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--Create-->
            <Toolkit:DataGridTemplatedColumn Width = "180" CanSort = "False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush = "Black" BorderThickness = "1 0 0 0" >
                        <TextBlock FontSize = "16" Padding = "0" Foreground = "#000000" Text = "    Create" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Margin = "30,0,0,0" Style = "{StaticResource CheckBoxStyle1}"  x:Name = "CBCreate" DataContext = "create" Tag  = "{Binding featureId}" VerticalAlignment = "Center"  VerticalContentAlignment = "Center" HorizontalAlignment = "Left" HorizontalContentAlignment = "Left" Checked = "CBCreate_Checked" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--Update-->
            <Toolkit:DataGridTemplatedColumn  Width = "180" CanSort = "False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush = "Black" BorderThickness = "1 0 0 0" >
                        <TextBlock FontSize = "16" Foreground = "#000000" Text = "    Update" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Margin = "30 0 0 0" Style = "{StaticResource CheckBoxStyle1}" IsChecked = "{Binding Update}"  x:Name = "CBUpdate" DataContext = "update" Tag  = "{Binding featureId}" VerticalAlignment = "Center"  VerticalContentAlignment = "Center" HorizontalAlignment = "Left" HorizontalContentAlignment = "Left"  />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--Delete-->
            <Toolkit:DataGridTemplatedColumn  Width = "180" CanSort = "False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush = "Black" BorderThickness = "1 0 0 0" >
                        <TextBlock FontSize = "16" Foreground = "#000000" Text = "    Delete" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Margin = "30,0,0,0" Style = "{StaticResource CheckBoxStyle1}" IsChecked = "{Binding Delete}"  x:Name = "CBDelete" DataContext = "delete"  Tag  = "{Binding featureId}" VerticalAlignment = "Center"  VerticalContentAlignment = "Center" HorizontalAlignment = "Left" HorizontalContentAlignment = "Left" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--View-->
            <Toolkit:DataGridTemplatedColumn  Width = "180" CanSort = "False"  >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush = "Black" BorderThickness = "1 0 0 0" >
                        <TextBlock FontSize = "16" Foreground = "#000000" Text = "    View" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox Checked = "CBView_Checked" Unchecked = "CBView_Unchecked" IsChecked = "{Binding View}" Indeterminate = "CBView_Indeterminate" Margin = "30,0,0,0" Style = "{StaticResource CheckBoxStyle1}" x:Name = "view" DataContext = "{Binding featureName}" Tag  = "view" AccessKey = "{Binding index}" VerticalAlignment = "Center"  VerticalContentAlignment = "Center" HorizontalAlignment = "Left" HorizontalContentAlignment = "Left" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>

            <!--List-->
            <Toolkit:DataGridTemplatedColumn  Width = "180"  CanSort = "False" x:Name = "CLMList" >
                <Toolkit:DataGridTemplatedColumn.Header>
                    <Border BorderBrush = "Black" BorderThickness = "1 0 0 0" >
                        <TextBlock FontSize = "16" Foreground = "#000000" Text = "    List" />
                    </Border>
                </Toolkit:DataGridTemplatedColumn.Header>
                <Toolkit:DataGridTemplatedColumn.CellTemplate>
                    <DataTemplate >
                        <CheckBox x:FieldModifier = "public" IsChecked = "{Binding List}" Margin = "30,0,0,0"  Style = "{StaticResource CheckBoxStyle1}" x:Name = "CBList" DataContext = "list" Tag  = "{Binding featureId}" VerticalAlignment = "Center"  VerticalContentAlignment = "Center" HorizontalAlignment = "Left" HorizontalContentAlignment = "Left" Unchecked = "CBList_Unchecked" Checked = "CBList_Checked" />
                    </DataTemplate>
                </Toolkit:DataGridTemplatedColumn.CellTemplate>
            </Toolkit:DataGridTemplatedColumn>
        </Toolkit:DataGrid.Columns>
    </Toolkit:DataGrid>

Я предполагаю, что значение привязки IsChecked неверно. Мог бы поделиться мини-образцом для меня с github. Я отредактирую базу на вашем демо.

Nico Zhu - MSFT 08.07.2019 15:40

да, я пытаюсь связать истинное ложное значение из кода позади :( хорошо, я загружу код Datagrid.

user11362349 08.07.2019 15:44

ссылка на github: = github.com/patilketan888/Scan-Image-in-UWP.git скачать демонстрацию DataGrid Checkbox

user11362349 08.07.2019 16:43

Я проверил ваш код, но не нашел проблему если пользователь установил флажок чтения администратора, то флажок обновления и удаления установлен автоматически.

Nico Zhu - MSFT 08.07.2019 17:03

извините :( на самом деле я хочу этот вывод

user11362349 09.07.2019 06:14

в строке администратора установлен флажок «Чтение столбца», тогда также следует отметить столбец «Обновление строки администратора» и «Удалить столбец» или наоборот.

user11362349 09.07.2019 06:16

Ок, понял, выложу код.

Nico Zhu - MSFT 09.07.2019 09:03

хорошо :) простым способом, если пользователь нажимает на флажки обновления/создания/удаления, тогда должна быть отмечена строка флажка списка и просмотра А ТАКЖЕ, если пользователь установил флажок просмотра, тогда флажок списка должен быть установлен.

user11362349 09.07.2019 09:21

Давайте продолжить обсуждение в чате.

Nico Zhu - MSFT 09.07.2019 09:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
9
361
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

in simple way if user click on update/create/delete check boxes then list and view check box row should be checked AND if user checked the view checkbox then List checkbox should be checked.

Для вашего требования вы можете использовать двустороннюю привязку для реализации. Для получения подробной информации о коде см. следующее. Следующий код был изменен на основе предоставленной вами демонстрации, вы можете скопировать и заменить напрямую.

Класс FeatureData

public class FeatureData : INotifyPropertyChanged
{
    public int featureId { get; set; }
    public string featureName { get; set; }

    private bool _create;

    public bool Create
    {
        get { return _create; }
        set
        {
            _create = value;
            UpdateViewAndList(value);
            OnChanged();
        }
    }
    private bool _update;

    public bool Update
    {
        get { return _update; }
        set
        {
            _update = value;
            UpdateViewAndList(value);
            OnChanged();
        }
    }
    private bool _delete;

    public bool Delete
    {
        get { return _delete; }
        set
        {
            _delete = value;
            UpdateViewAndList(value);
            OnChanged();
        }
    }
    private bool _list;
    public bool List
    {
        get { return _list; }
        set
        {
            _list = value;
            OnChanged();
        }
    }
    private bool _view;
    public bool View
    {
        get { return _view; }
        set
        {
            _view = value;
            this.List = value;
            OnChanged();
        }
    }
    private void UpdateViewAndList(bool value)
    {
        if (value)
        {
            this.View = true;
            this.List = true;

        }
        else
        {
            this.View = false;
            this.List = false;
        }
    }
    //public string index { get; set; }
    public FeatureData(bool Create, bool Update, bool Delete, bool List, bool View, int featureId, string featureName)
    {
        this.featureId = featureId;
        this.featureName = featureName;
        this.Create = Create;
        this.Update = Update;
        this.Delete = Delete;
        this.List = List;
        this.View = View;
        //this.index = index;
    }

    private bool _IsSelected = false;
    public bool IsSelected { get { return _IsSelected; } set { _IsSelected = value; OnChanged("IsSelected"); } }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;
    private void OnChanged([CallerMemberName]string prop = null)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(prop));
    }

    #endregion

}

привязка XAML

<Toolkit:DataGrid.Columns>
    <!--  Feature Column  -->
    <Toolkit:DataGridTemplatedColumn CanSort = "False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <TextBlock
                Width = "280"
                FontSize = "16"
                Foreground = "#000000"
                Text = "Feature"
                />
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <TextBlock
                    Width = "280"
                    Padding = "6,0,0,0"
                    FontSize = "14"
                    Foreground = "#333333"
                    Text = "{Binding featureName}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  Create  -->
    <Toolkit:DataGridTemplatedColumn Width = "180" CanSort = "False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush = "Black" BorderThickness = "1,0,0,0">
                <TextBlock
                    Margin = "15,0,0,0"
                    Padding = "0"
                    FontSize = "16"
                    Foreground = "#000000"
                    Text = "Create"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name = "CBCreate"
                    Margin = "30,0,0,0"
                    HorizontalAlignment = "Left"
                    VerticalAlignment = "Center"
                    HorizontalContentAlignment = "Left"
                    VerticalContentAlignment = "Center"
                    IsChecked = "{Binding Create,Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  Update  -->
    <Toolkit:DataGridTemplatedColumn Width = "180" CanSort = "False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush = "Black" BorderThickness = "1,0,0,0">
                <TextBlock
                    FontSize = "16"
                    Foreground = "#000000"
                    Text = "    Update"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name = "CBUpdate"
                    Margin = "30,0,0,0"
                    HorizontalAlignment = "Left"
                    VerticalAlignment = "Center"
                    HorizontalContentAlignment = "Left"
                    VerticalContentAlignment = "Center"
                    IsChecked = "{Binding Update, Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  Delete  -->
    <Toolkit:DataGridTemplatedColumn Width = "180" CanSort = "False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush = "Black" BorderThickness = "1,0,0,0">
                <TextBlock
                    FontSize = "16"
                    Foreground = "#000000"
                    Text = "    Delete"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name = "CBDelete"
                    Margin = "30,0,0,0"
                    HorizontalAlignment = "Left"
                    VerticalAlignment = "Center"
                    HorizontalContentAlignment = "Left"
                    VerticalContentAlignment = "Center"
                    IsChecked = "{Binding Delete, Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  View  -->
    <Toolkit:DataGridTemplatedColumn Width = "180" CanSort = "False">
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush = "Black" BorderThickness = "1,0,0,0">
                <TextBlock
                    FontSize = "16"
                    Foreground = "#000000"
                    Text = "    View"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name = "view"
                    Margin = "30,0,0,0"
                    HorizontalAlignment = "Left"
                    VerticalAlignment = "Center"
                    HorizontalContentAlignment = "Left"
                    VerticalContentAlignment = "Center"
                    IsChecked = "{Binding View, Mode=TwoWay}"
                    Tag = "view"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>

    <!--  List  -->
    <Toolkit:DataGridTemplatedColumn
        x:Name = "CLMList"
        Width = "180"
        CanSort = "False"
        >
        <Toolkit:DataGridTemplatedColumn.Header>
            <Border BorderBrush = "Black" BorderThickness = "1,0,0,0">
                <TextBlock
                    FontSize = "16"
                    Foreground = "#000000"
                    Text = "    List"
                    />
            </Border>
        </Toolkit:DataGridTemplatedColumn.Header>
        <Toolkit:DataGridTemplatedColumn.CellTemplate>
            <DataTemplate>
                <CheckBox
                    x:Name = "CBList"
                    Margin = "30,0,0,0"
                    HorizontalAlignment = "Left"
                    VerticalAlignment = "Center"
                    HorizontalContentAlignment = "Left"
                    VerticalContentAlignment = "Center"
                    x:FieldModifier = "public"
                    IsChecked = "{Binding List, Mode=TwoWay}"
                    />
            </DataTemplate>
        </Toolkit:DataGridTemplatedColumn.CellTemplate>
    </Toolkit:DataGridTemplatedColumn>
</Toolkit:DataGrid.Columns>

я не получаю [CallerMemberName] ??

user11362349 09.07.2019 09:38

Добавьте пространство имен using System.Runtime.CompilerServices;.

Nico Zhu - MSFT 09.07.2019 09:41

у меня так много вопросов в uwp, пожалуйста, поделитесь ссылкой для изучения. Я страдаю от проблемы с отзывчивым пользовательским интерфейсом. пожалуйста, дайте мне несколько трюков, как это сделать.

user11362349 09.07.2019 09:46

Для базового руководства по uwp вы можете следовать этому блог.

Nico Zhu - MSFT 09.07.2019 09:48

И если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь опубликовать их на Stackoverflow.

Nico Zhu - MSFT 09.07.2019 09:49

Спасибо за вашу поддержку :) хорошего дня.

user11362349 09.07.2019 09:52

не могли бы вы ответить на мой вопрос - stackoverflow.com/q/57161553/11362349

user11362349 24.07.2019 08:35

Я ответил на ваш вопрос, надеюсь, что это полезно.

Nico Zhu - MSFT 24.07.2019 09:32

Другие вопросы по теме