как сделать checkbox проверить и снять флажок wpf

Я установил флажок в datagrid


  
 

и привязка datagrid

 datagrid1.ItemSource = dtData.DefaultView;

In datatable I am getting Active as 0 and 1, I want to show my check box checked when Active = 0

Сетка привязана, но я не могу связать флажок.

Кто-нибудь, пожалуйста, расскажите, как показать checkbox check/uncheck на основе моего состояния.

0
nl ja de
@ChrisF: я не использую интерфейс INotifiyPropertyChanged
добавлено автор Rocky, источник
Установили ли вы контекст для своего вида? Вы реализовали интерфейс INotifiyPropertyChanged на вашем объекте? Является Active логическим типом?
добавлено автор ChrisF, источник
Я предполагаю, что вы имели в виду « получение Active как нуль и один », поэтому я тоже редактировал эту строку.
добавлено автор gideon, источник

3 ответы

IsChecked ожидает логическое значение (true/false), но таблица содержит числовой тип. Вам нужно добавить ValueConverter в оператор привязки, который преобразует числовое значение в значение boolean.

Проверьте Как связать логическое значение со списком в wpf для обратного случая (преобразование bool в int). В вашем случае ValueConverter должен быть:

public class NumToBoolConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return ((int)value == 1);   
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (bool)value ? 1 : 0;
    }
}

}

<Сильный> UPDATE

Этот post содержит NumToBoolConverter, который также выполняет тип и нулевую проверку:

public class NumToBoolConverter : IValueConverter
{

    #region IValueConverter Members

    public object Convert(object value, Type targetType, 
        object parameter, System.Globalization.CultureInfo culture)
    {
        if (value!=null && value is int )
        {
            var val = (int)value;
            return (val==0) ? false : true;
        }
        return null;

    }

    public object ConvertBack(object value, Type targetType, 
        object parameter, System.Globalization.CultureInfo culture)
    {
        if (value!=null && value is bool )
        {
            var val = (bool)value;
            return val ? 1 : 0;
        }
        return null;
    }

    #endregion
}
5
добавлено
Я использую UserControl для своего дизайна. как я могу использовать windows.resource
добавлено автор Rocky, источник
Замените UserControl.Resource для Windows.Resource. Ресурс - это параметр его родительского объекта, поэтому вам нужно указать тип родителя, как и в случае с DataGrid.XYZ
добавлено автор Panagiotis Kanavos, источник

Я попытался изменить свой запрос перед привязкой к datagrid и добавил «case» к моему запросу

Select ID ,DESC, CASE WHEN [STATUS] = 0 THEN 'True' WHEN [STATUS] = 1 THEN 'False' END AS  [Active], ORDER [Order] from tbldesc

его работа отлично подходит для меня.

0
добавлено

Попробуйте, если это поможет:

  • Создать столбец, полученный из DataGridBoolColumn
  • Переопределите GetColumnValueAtRow (и SetColumnValueAtRow, если хотите ваша колонка будет доступна для редактирования)
  • Чтобы эти методы вызывали унаследованные реализации для работы с datasource, но делать предварительную/пост-обработку для преобразования 0 и 1 в "false" и "true" соответственно.
0
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot