DataGrid Выбрать все функции

Интересно, что я здесь делаю не так? У меня есть DataGrid с одним столбцом под названием Выбрано. Рядом с ним у меня есть CheckBox в DataGridTemplateColumn, который также привязан к полю "Выбрано". Идея состоит в том, что всякий раз, когда флажок установлен или снят, в выбранном поле должно отображаться 1 или 0 соответственно (т.е. логические значения). Это нормально работает.

Однако я хочу также разместить еще один флажок в разделе Заголовок столбца DataGridTemplateColumn, чтобы я мог установить или снять все флажки в разделе DataGridTemplateColumn.CellTemplate. Здесь у меня возникают проблемы, в то время как флажки в разделе DataGridTemplateColumn.CellTemplate проверяются или снимаются, соответствующие значения в выбранном поле вообще не меняются. Это как если бы привязка не удалась.

Что я делаю неправильно?

Вот простой XAML и код для загрузки данных в поле Выбрано.

<Grid>
 <DataGrid Name = "MyDataGrid" AutoGenerateColumns = "False">
   <DataGrid.Columns>
      <DataGridTextColumn Width = "100" Binding = "{Binding Path=Selected}" Header = "Selected"  />
        <DataGridTemplateColumn Width = "80">
          <DataGridTemplateColumn.Header>
            <CheckBox Content = " Slect All" x:Name = "headerCheckBox" />
          </DataGridTemplateColumn.Header>
          <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
             <CheckBox x:Name = "Mychk" HorizontalAlignment = "Center" IsChecked = "{Binding Selected, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" />
              <DataTemplate.Triggers>
                <DataTrigger Binding = "{Binding ElementName=headerCheckBox, Path=IsChecked}" Value = "True">
                   <Setter TargetName = "Mychk" Property = "IsChecked" Value = "True" />
                </DataTrigger>
             </DataTemplate.Triggers>
           </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
      </DataGridTemplateColumn>
    </DataGrid.Columns>
  </DataGrid>
</Grid>

VB.Net

Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
 Dim MyTable = New System.Data.DataTable
 MyTable.Columns.Add("Selected", GetType(Integer))
 For Each array As Object In New List(Of Integer)() From {0, 0, 0, 0, 0}
   MyTable.Rows.Add(array)
 Next
 MyDataGrid.ItemsSource = MyTable.DefaultView
End Sub

C#

public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();   
            {
                System.Data.DataTable MyTable = new System.Data.DataTable();
                MyTable.Columns.Add("Selected", typeof(int));
                foreach (object array in new List<int> {0,0,0,0,0})
                {
                    MyTable.Rows.Add(array);
                }
                MyDataGrid.ItemsSource = MyTable.DefaultView;
            }
         }
    }

Кстати, я пытаюсь делать все в XAML без кода (тоже без конвертера)

Вероятно, вы могли бы использовать MultiBinding для свойства Mychk.IsChecked. MultiBinding будет содержать текущую привязку плюс привязку из DataTrigger, а многозначный преобразователь создаст ожидаемый результат.

Clemens 23.04.2018 09:33

Тем не менее, ваша проблема, безусловно, объяснено здесь. Переместите привязку IsChecked в средство настройки стилей.

Clemens 23.04.2018 09:35

Привет, Клеменс, я перешел по предоставленной ссылке и внес следующие изменения в CheckBox внутри CellTemplate <CheckBox x: Name = "Mychk" HorizontalAlignment = "Center"> <CheckBox.Style> <Style TargetType = "CheckBox"> <Setter Property = "IsChecked" Value = "{Выбранная привязка, UpdateSourceTrigger = PropertyChanged, Mode = TwoWay}" /> </Style> </CheckBox.Style> </CheckBox>. Все еще не работает

Edgar 23.04.2018 10:47

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

Edgar 23.04.2018 10:52
Стоит ли изучать 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
4
220
0

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