Не делайте беспорядок преобразования, просмотра и просмотра модели. Оставьте модель как есть в базе данных. Если в базе данных статус int, оставьте его как int. Делать инверсию через конвертер. Напишите в свою базу данных, используя данные из viewmodel.
Сделать обратный логический преобразователь:
public class InverseBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
bool testValue = System.Convert.ToBoolean(value);
return !testValue; // or do whatever you need with this boolean
}
catch { return true; } // or false
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
try
{
int testValue = System.Convert.ToInt32(!((bool)value));
return testValue; // or do whatever you need with this boolean
}
catch { return 1; }
}
}
Укажите конвертер:
<Window.Resources>
<yourNS:InverseBooleanConverter x:Key="inverseIntBoolConverter"/>
...
<CheckBox x:Name="cbUserStatus" Content="Disable" IsChecked="{Binding UserStatus,Converter={StaticResource inverseIntBoolConverter}}"/>
ViewModel:
public int UserStatus
{
get { return userstatus; }
set
{
if (value!=userstatus)
{
userstatus = value;
OnPropertyChanged(nameof(UserStatus));
}
}
}
Пишите в свою базу данных из viewModel:
int userStatus = viewModel.UserStatus;
Использование параметров при построении запроса для предотвращения внедрения SQL :
var comm = connection.CreateCommand();
comm.CommandText = "Update users set USER_FIRSTNAME = @firstName , USER_ROLE = @userRole, USER_STATUS = @userStatus where ID = @id;"
comm.Parameters.Add("@firstName",firstName );
comm.Parameters.Add("@userRole", userRole);
comm.Parameters.Add("@userStatus", userStatus);
comm.Parameters.Add("@id", id);
comm.ExecuteNonQuery();
Код конвертера для состояния bool в ViewModel
public class InverseBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !((bool)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return Convert(value, targetType, parameter, culture);
}
}