У меня есть представление, которое содержит профиль пользователя текущего пользователя.Представление содержит модель представления с двусторонней привязкой к отдельным атрибутам, таким как имя пользователя или адрес электронной почты.Представление также имеет поведение, которое проверяет ввод и показывает ошибку, ввод не является допустимым.Из-за двусторонней привязки viewmodel обновляет значение, даже если поведение говорит, что ввод неправильный.Мне нужно решить эту проблему.
Мой текущий подход заключается в использовании в качестве атрибута включения поведения в viewmodelТаким образом, я могу получить доступ к атрибутам поведения в установщике атрибутов в модели представления.Поэтому я не могу остановить обновление на неправильных входах.Но я не могу получить доступ к поведению из моей viewmodel в xaml представления.Это способ, которым я могу сделать это вообще?
Мой следующий подход должен был бы передать атрибут isValid поведения модели представления.Но здесь, опять же, я не знаю, как это сделать, возможно ли это вообще?
Последний подход - создать команду в модели представления, привязав ее к новой кнопке в профиле пользователя, используяодностороннее связывание и как-то передать входные данные из представления в команду и обновить userprofile.
Может быть, здесь кто-то, кто может мне помочь?
РЕДАКТИРОВАТЬ: Я отправляю некоторый код:
Это отдельная запись с моим поведением:
<Entry x:Name="phoneNumber" Text="{Binding TelephoneNum, Mode=TwoWay}">
<Entry.Behaviors>
<behaviors:TelNumBehavior x:Name="NumValidatorUser"/>
</Entry.Behaviors>
</Entry>
TelNumBehavior:
public class TelNumBehavior : Behavior<Entry>
{
...
public static readonly BindablePropertyKey IsVisiblePropertyKey =
BindableProperty.CreateReadOnly("IsVisible", typeof(bool), typeof(TelNumBehavior), false);
public static readonly BindableProperty IsVisibleProperty = IsVisiblePropertyKey.BindableProperty;
...
public bool IsVisible
{
get { return (bool) this.GetValue(IsVisibleProperty); }
set
{
this.SetValue(IsVisiblePropertyKey, value);
}
}
...
(OnAttachedTo, OnDetachingFrom)
...
private void bindable_TextChanged(object sender, TextChangedEventArgs e)
{
Entry entry = sender as Entry;
this.IsVisible = (entry.Text == "")
? true
: (Regex.IsMatch(e.NewTextValue, mobileRegex) || Regex.IsMatch(e.NewTextValue, fixedLineRegex));
entry.TextColor = this.IsVisible ? Color.Default : Color.Red;
}
Подводя итог: я использую это поведение для проверки некоторых входных данных.Но модель представления не знает, верны ли входные данные или нет.И это в настоящее время моя проблема.Я не знаю, как сообщить модели представления о состоянии входных данных.
}