Запись не очищается с помощью привязываемого свойства - PullRequest
0 голосов
/ 12 июля 2020

Мои 2 записи привязаны к привязываемому свойству и работают хорошо, но после сохранения данных из записей я хочу очистить значение записей, но это не могло повлиять на мой пользовательский интерфейс, если я использую ctrl + save в моем файле xaml, свойство onproperty измененное событие запущено и записи удалены. Также я использовал класс в своем привязываемом свойстве с двумя переменными get set. если я создаю два разных связываемых свойства для двух записей, чем это работает, но в классе это не работает. но я хочу использовать только одно связываемое свойство с классом. Я делюсь своим кодом.

// Класс Inotify

public class BaseViewModel : INotifyPropertyChanged
{
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
else
{
return;
}
}
}

// класс модели

public class NoModel
{
public string No { get; set; }
public string Amt { get; set; }
}

// при изменении свойства

public NoModel bindNoModel= new NoModel ();

public NoModel BindNoModel
{
get { return bindNoModel; }
set
{
bindNoModel= value;
OnPropertyChanged(nameof(BindNoModel));
}
}

// мой код xaml

    <StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand" VerticalOptions="StartAndExpand">
        <Label WidthRequest="110" Text="Amount" VerticalOptions="Center" Font="Bold" FontSize="Medium" ></Label>
        <Entry Text="{Binding BindNoModel.Amt }" Placeholder="Enter Amount" ReturnType="Done"  ReturnCommand="{Binding SubmitCommand}" Keyboard="Numeric" HorizontalOptions="FillAndExpand" />
    </StackLayout>

// при команде сохранения

BindNoModel.No = string.Empty;
BindNoModel.Amt = string.Empty;

Примечание 1: приведенный выше код при команде сохранения не работает, я использую ctrl + save на моем xaml файл, а затем пользовательский интерфейс изменяется.

Примечание 2: этот код ниже работает, если я создаю разные свойства

public string no;
public string No
{
    get { return no; }
    set
    {
        no = value;
        OnPropertyChanged(nameof(No));
    }
}
public string amt ;
public string Amt
{
get { return amt ; }
set
{
amt = value;
OnPropertyChanged(nameof(Amt ));
}
}

// при сохранении команды

No = string.Empty;
Amt = string.Empty;

1 Ответ

0 голосов
/ 13 июля 2020

В исходном вопросе в команде сохранения вы меняете значение свойства BindNoModel.No, BindNoModel.Amt вместо BindNoModel, поэтому OnPropertyChanged(nameof(BindNoModel)) не срабатывает.

Вы можно сбросить BindNoModel в команде сохранения, чтобы достичь желаемого:

public void save() {

    BindNoModel = new NoModel() {Amt = string.Empty };

}

В вашем Note2 вы меняете значение BindNoModel.No и BindNoModel.Amy, затем OnPropertyChanged(nameof(No)); и OnPropertyChanged(nameof(Amy)); будет запущен, поэтому значение записи изменится:

public void save() {

    BindNoModel.No = string.Empty;
    BindNoModel.Amt = string.Empty;
}

Был загружен образец проекта , и вы можете задать мне любой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...