IsChecked expects a boolean value (true/false) but the table contains a numeric type. You need to add a ValueConverter to the binding statement that will convert the numeric value to a boolean value.
Check How to bind a boolean to a combobox in WPF for the inverse case (convert an bool to an int). In your case, the ValueConverter should be:
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
This post has a NumToBoolConverter that also does type and null checking:
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
}