Как проверить на просмотр/viewmodelC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как проверить на просмотр/viewmodel

Сообщение Anonymous »

Я в настоящее время делаю приложение для посетителей для моего рабочего места, это простое приложение, позволяющее посетителям входить и выходить, у меня есть текстовые поля с просьбой информации о посетителях. У моего SignInView много текстовых поток и мой подписывающая среда, у меня есть SignInView, работающая правильно, но когда я связываю его с моей подписью, он все еще подтверждает то, что в SignInView, а не подписан. У меня есть вся моя проверка в классе для посетителей, который я ссылаюсь на представления/текстовые поле, использующие изменения свойства уведомления
Это то, на что выглядит мой класс, я попытался разделить представление на различные функции и вызывая эту функцию, я также пытался использовать свой навигации/хранилище, чтобы обнаружить, что есть в пользователе, а затем вызывает у вас соответствующие валидации, но не соответствует. Просмотры и просмотры и модели.using CommunityToolkit.Mvvm.ComponentModel;
using System;
using System.Text.RegularExpressions;

namespace Visitor_App.Models
{
public enum ValidationContext
{
SignIn,
SignOut,
GroupSignIn,
GroupSignOut
}

public partial class Visitor : ObservableObject
{
public string VisitorID { get; set; }

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string _forename;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string _surname;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string _company;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(IsOtherReasonVisible))]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string _reasonOfVisit;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string? _otherReason;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(IsOtherPersonVisible))]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string _personOfVisit;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
[NotifyPropertyChangedFor(nameof(ValidationMessage))]
private string? _otherPerson;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
private string _hostForename;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
private string _hostSurname;

[ObservableProperty]
[NotifyPropertyChangedFor(nameof(Invalid))]
[NotifyPropertyChangedFor(nameof(Valid))]
private string _membersOfGroup;

public bool Invalid => !Valid;

public bool Valid => IsValidFor(CurrentValidationContext);

public string ValidationMessage => GetValidationMessage(CurrentValidationContext);

public ValidationContext CurrentValidationContext { get; set; } = ValidationContext.SignIn;

public bool IsValidFor(ValidationContext context)
{
switch (context)
{
case ValidationContext.SignIn:
return ValidateSignIn();
case ValidationContext.SignOut:
return ValidateSignOut();
case ValidationContext.GroupSignIn:
return ValidateGroupSignIn();
case ValidationContext.GroupSignOut:
return ValidateGroupSignOut();
default:
throw new ArgumentOutOfRangeException(nameof(context), context, null);
}
}

private bool ValidateSignIn()
{
if (string.IsNullOrWhiteSpace(Forename) || Regex.IsMatch(Forename, @"\d"))
return false;

if (string.IsNullOrWhiteSpace(Surname) || Regex.IsMatch(Surname, @"\d"))
return false;

if (string.IsNullOrWhiteSpace(Company))
return false;

if (string.IsNullOrWhiteSpace(ReasonOfVisit))
return false;

if (ReasonOfVisit == "Other" && (string.IsNullOrWhiteSpace(OtherReason) || Regex.IsMatch(OtherReason, @"\d")))
return false;

if (string.IsNullOrWhiteSpace(PersonOfVisit))
return false;

if (PersonOfVisit == "Other" && (string.IsNullOrWhiteSpace(OtherPerson) || Regex.IsMatch(OtherPerson, @"\d")))
return false;

return true;
}

private bool ValidateSignOut()
{
if (string.IsNullOrWhiteSpace(Company))
return false;

if (string.IsNullOrWhiteSpace(Forename) || Regex.IsMatch(Forename, @"\d"))
return false;

if (string.IsNullOrWhiteSpace(Surname) || Regex.IsMatch(Surname, @"\d"))
return false;

return true;
}

private bool ValidateGroupSignIn()
{
if (Regex.IsMatch(_hostForename, @"\d"))
return false;

if (Regex.IsMatch(_hostSurname, @"\d"))
return false;

if (Regex.IsMatch(_membersOfGroup, @"\d"))
return false;

if (string.IsNullOrWhiteSpace(Company))
return false;

if (string.IsNullOrWhiteSpace(ReasonOfVisit))
return false;

if (ReasonOfVisit == "Other" && (string.IsNullOrWhiteSpace(OtherReason) || Regex.IsMatch(OtherReason, @"\d")))
return false;

if (string.IsNullOrWhiteSpace(PersonOfVisit))
return false;

if (PersonOfVisit == "Other" && (string.IsNullOrWhiteSpace(OtherPerson) || Regex.IsMatch(OtherPerson, @"\d")))
return false;

return true;
}

private bool ValidateGroupSignOut()
{
if (string.IsNullOrWhiteSpace(Company))
return false;

if (string.IsNullOrWhiteSpace(_hostForename) || Regex.IsMatch(_hostForename, @"\d"))
return false;

if (string.IsNullOrWhiteSpace(_hostSurname) || Regex.IsMatch(_hostSurname, @"\d"))
return false;

return true;
}

public string GetValidationMessage(ValidationContext context)
{
switch (context)
{
case ValidationContext.SignIn:
return GetSignInValidationMessage();
case ValidationContext.SignOut:
return GetSignOutValidationMessage();
case ValidationContext.GroupSignIn:
return GetSignOutValidationMessage();
case ValidationContext.GroupSignOut:
return GetSignOutValidationMessage();
default:
throw new ArgumentOutOfRangeException(nameof(context), context, null);
}
}

private string GetSignInValidationMessage()
{
if (string.IsNullOrWhiteSpace(Forename))
return "Forename cannot be empty";

if (Regex.IsMatch(Forename, @"\d"))
return "Forename must not contain numbers";

if (string.IsNullOrWhiteSpace(Surname))
return "Surname cannot be empty";

if (Regex.IsMatch(Surname, @"\d"))
return "Surname must not contain numbers";

if (string.IsNullOrWhiteSpace(Company))
return "Company cannot be empty";

if (string.IsNullOrWhiteSpace(ReasonOfVisit))
return "Reason of visit cannot be empty";

if (ReasonOfVisit == "Other" && string.IsNullOrWhiteSpace(OtherReason))
return "Other Reason cannot be empty";

if (ReasonOfVisit == "Other" && Regex.IsMatch(OtherReason, @"\d"))
return "Other Reason must not contain numbers";

if (string.IsNullOrWhiteSpace(PersonOfVisit))
return "Person of visit cannot be empty";

if (PersonOfVisit == "Other" && string.IsNullOrWhiteSpace(OtherPerson))
return "Other Person cannot be empty";

if (PersonOfVisit == "Other" && Regex.IsMatch(OtherPerson, @"\d"))
return "Other Person must not contain numbers";

return string.Empty;
}

private string GetSignOutValidationMessage()
{
if (string.IsNullOrWhiteSpace(Forename))
return "Forename cannot be empty";

if (Regex.IsMatch(Forename, @"\d"))
return "Forename must not contain numbers";

if (string.IsNullOrWhiteSpace(Surname))
return "Surname cannot be empty";

if (Regex.IsMatch(Surname, @"\d"))
return "Surname must not contain numbers";

return string.Empty;
}

private string GetGroupSignInValidationMessage()
{
if (string.IsNullOrWhiteSpace(_hostForename))
return "Host Forename cannot be empty";

if (Regex.IsMatch(_hostForename, @"\d"))
return "Host Forename must not contain numbers";

if (string.IsNullOrWhiteSpace(_hostSurname))
return "Host Surname cannot be empty";

if (Regex.IsMatch(_hostSurname, @"\d"))
return "Host Surname must not contain numbers";

if (!Regex.IsMatch(_membersOfGroup, @"^[a-zA-Z]+$"))
return "Group members must not contain numbers.";

if (string.IsNullOrWhiteSpace(Company))
return "Company cannot be empty";

if (string.IsNullOrWhiteSpace(ReasonOfVisit))
return "Reason of visit cannot be empty";

if (ReasonOfVisit == "Other" && string.IsNullOrWhiteSpace(OtherReason))
return "Other Reason cannot be empty";

if (ReasonOfVisit == "Other" && Regex.IsMatch(OtherReason, @"\d"))
return "Other Reason must not contain numbers";

if (string.IsNullOrWhiteSpace(PersonOfVisit))
return "Person of visit cannot be empty";

if (PersonOfVisit == "Other" && string.IsNullOrWhiteSpace(OtherPerson))
return "Other Person cannot be empty";

if (PersonOfVisit == "Other" && Regex.IsMatch(OtherPerson, @"\d"))
return "Other Person must not contain numbers";

return string.Empty;
}

private string GetGroupSignOutValidationMessage()
{
if (string.IsNullOrWhiteSpace(_hostForename))
return "Host Forename cannot be empty";

if (Regex.IsMatch(_hostForename, @"\d"))
return "Host Forename must not contain numbers";

if (string.IsNullOrWhiteSpace(_hostSurname))
return "Host Surname cannot be empty";

if (Regex.IsMatch(_hostSurname, @"\d"))
return "Host Surname must not contain numbers";

if (!Regex.IsMatch(_membersOfGroup, @"^[a-zA-Z]+$"))
return "Group members must not contain numbers.";

return string.Empty;
}

public bool IsOtherReasonVisible => _reasonOfVisit == "Other";
public bool IsOtherPersonVisible => _personOfVisit == "Other";
}
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... -viewmodel
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как проверить на просмотр/viewmodel
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Как проверить на просмотр/viewmodel
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Вызов нескольких функций ViewModel на экране против одной функции ViewModel
    Anonymous » » в форуме Android
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Вызов нескольких функций ViewModel на экране против одной функции ViewModel
    Anonymous » » в форуме Android
    0 Ответы
    85 Просмотры
    Последнее сообщение Anonymous
  • Как правильно отправить событие ViewModel при запуске активности в функции инициализации ViewModel?
    Anonymous » » в форуме Android
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»