код c# для устанавливает весь флажок в wpf datagrid

Геттеры в основном хороши для производных состояний: https://vuex.vuejs.org/guide/getters.html

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

8
задан Eoin Campbell 16 April 2009 в 13:11
поделиться

4 ответа

Это основано на чьем-то другом источнике, который я не могу вспомнить, но мы используем его, чтобы помочь найти визуальных детей тип. Возможно, это не самое эффективное использование для этого сценария, но оно может помочь вам встать на правильный путь.

    public static childItem FindVisualChild<childItem>(DependencyObject obj) where childItem : DependencyObject
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
        {
            DependencyObject child = VisualTreeHelper.GetChild(obj, i);
            if (child != null && child is childItem)
                return (childItem)child;

            childItem childOfChild = FindVisualChild<childItem>(child);
            if (childOfChild != null)
                return childOfChild;
        }
        return null;
    }

[Изменить 4.16.09] Исходя из этого, попробуйте этот метод. Должен найти все флажки и изменить состояние в соответствии с предоставлением, которое вызывается из вашего обработчика событий Checked / Unchecked.

   public static void CheckAllBoxes(DependencyObject obj, bool isChecked)
    {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
        {
            // If a checkbox, change IsChecked and continue.
            if (obj is CheckBox)
            {
                ((CheckBox) obj).IsChecked = isChecked;
                continue;
            }

            DependencyObject child = VisualTreeHelper.GetChild(obj, i);
            CheckAllBoxes(child, isChecked);
        }
    }
2
ответ дан 5 December 2019 в 12:13
поделиться

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

Еще одним вариантом будет использование триггеров

0
ответ дан 5 December 2019 в 12:13
поделиться

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

Соответствующие части из xaml

<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:toolkit="http://schemas.microsoft.com/wpf/2008/toolkit">
    <toolkit:DataGrid Name="dataGrid" 
     ItemsSource="{Binding}" AutoGenerateColumns="True" 
     SelectionMode="Extended" CanResizeRows="False">
    <toolkit:DataGrid.RowHeaderTemplate>
       <DataTemplate>
           <Grid>
               <CheckBox IsChecked="{
                  Binding Path=IsSelected, 
                  Mode=TwoWay, 
                  RelativeSource={RelativeSource FindAncestor, 
                  AncestorType={x:Type toolkit:DataGridRow}}}"
            />
           </Grid>
       </DataTemplate>
    </toolkit:DataGrid.RowHeaderTemplate>
    </toolkit:DataGrid>
</Window>
7
ответ дан 5 December 2019 в 12:13
поделиться
DataColumn dt = null;            
        for (int i = 0; i < dataGrid.Columns.Count; i++)
        {

     dt = new DataColumn("Column Name");

            dt.DataType = typeof(Boolean);
            dt.DefaultValue = false;
             dataTable.Add(dt);
        }

dataGied.DataContext = dataTable;



<Custom:DataGrid x:Name="dataGrid" AutoGenerateColumns="True" ItemsSource="{Binding}" />                    

Ну, это всего лишь грубая идея, надеюсь, это сработает

0
ответ дан 5 December 2019 в 12:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: