Мое приложение отображает права доступа к DataGrid из базы данных. Для реализации этого я использую MyToolkit.Controls.DataGrid. Теперь я хочу, чтобы вывод был, если пользователь установил флажок «Администратор» или «Обновить/удалить/создать», затем флажок «Просмотр и список» был установлен наоборот, а также я хочу установить значение флажка из базы данных.
заранее спасибо.
Изображение
если пользователь проверил создание/обновление/удаление, тогда тот же список строк и представление должны быть отмечены флажком
если пользователь установил флажок просмотра, то список столбцов выбранной строки должен быть проверен
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>
да, я пытаюсь связать истинное ложное значение из кода позади :( хорошо, я загружу код Datagrid.
ссылка на github: = github.com/patilketan888/Scan-Image-in-UWP.git скачать демонстрацию DataGrid Checkbox
Я проверил ваш код, но не нашел проблему если пользователь установил флажок чтения администратора, то флажок обновления и удаления установлен автоматически.
извините :( на самом деле я хочу этот вывод
в строке администратора установлен флажок «Чтение столбца», тогда также следует отметить столбец «Обновление строки администратора» и «Удалить столбец» или наоборот.
Ок, понял, выложу код.
хорошо :) простым способом, если пользователь нажимает на флажки обновления/создания/удаления, тогда должна быть отмечена строка флажка списка и просмотра А ТАКЖЕ, если пользователь установил флажок просмотра, тогда флажок списка должен быть установлен.
Давайте продолжить обсуждение в чате.





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] ??
Добавьте пространство имен using System.Runtime.CompilerServices;.
у меня так много вопросов в uwp, пожалуйста, поделитесь ссылкой для изучения. Я страдаю от проблемы с отзывчивым пользовательским интерфейсом. пожалуйста, дайте мне несколько трюков, как это сделать.
Для базового руководства по uwp вы можете следовать этому блог.
И если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь опубликовать их на Stackoverflow.
Спасибо за вашу поддержку :) хорошего дня.
не могли бы вы ответить на мой вопрос - stackoverflow.com/q/57161553/11362349
Я ответил на ваш вопрос, надеюсь, что это полезно.
Я предполагаю, что значение привязки
IsCheckedневерно. Мог бы поделиться мини-образцом для меня с github. Я отредактирую базу на вашем демо.