Мы делаем проект в университете с некоторыми из моих одноклассников. Мы должны сделать настольное приложение, и у нас есть некоторые проблемы с ним. Это было в основном очень трудно понять MVVM, но у меня есть некоторые проблемы с проверкой. Сначала мы хотели использовать интерфейс INotifyDataErrorInfo для проверки, потому что учитель рекомендовал это, но мы этого не поняли.
Итак, мы решили валидацию с помощью ValidationRules следующим образом:
public class CantBeNullRule : ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
string charString = value as string;
if (charString.Length == 0)
{
return new ValidationResult(false, $"The box can't be empty");
}
return new ValidationResult(true, null);
}
}
И мы связываем эти проверки для текстовых полей в представлении:
<TextBox x:Name="pwdPassword" Grid.Column="2" Grid.Row="4" Grid.ColumnSpan="4" BorderThickness="0,0,0,1" VerticalAlignment="Bottom" BorderBrush="#FF5DC2D5" Foreground="Black" SelectionBrush="#FF5DC2D5" FontFamily="Open Sans SemiBold" FontSize="10">
<TextBox.Text>
<Binding Path="Password" ValidatesOnDataErrors="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<rule:CantBeNullRule/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Проблема в том, что эти правила "CantBeNull" не будут выполняться, когда мы открываем представление, сначала мы должны что-то записать в текстовое поле. Я хотел бы, чтобы проверить каждую проверку на просмотр, когда я нажимаю на кнопку. Если одна из проверок ложна, выведите сообщение об ошибке, иначе выполните команду.
Мы хотим использовать эти ValidationRules, поэтому мы ждем ответов для такого рода проверки.