Значение записи обновлено в ВМ, но не в пользовательском интерфейсе - Xamarin Forms - PullRequest
0 голосов
/ 06 марта 2019

В моей виртуальной машине я присваиваю значение CurrentItem.SecondValue, когда флажок Toggle проверен, он получает любое значение, введенное в FirstValue Entry, но значение не обновляется в пользовательском интерфейсе, пока я не обновлю его / не переместлюсь между страницами. Когда я отлаживаю его, я вижу, что CurrentItem.SecondValue обновляется в VM. Любые предложения, как это можно исправить?
XAML:

<renderer:CustomKeyEntry x:Name="FirstValue" Text="{Binding CurrentItem.FirstValue}" HeightRequest="40" WidthRequest="250" BackgroundColor="#FFFFFF"  Margin="15, 0" TextColor="Black" IsEnabled="{Binding IsThisEnabled}" ReturnType="Next" />  

<common:Toggle Text="{i18n:Translate Use_This_Number}" Checked="{Binding SecondValueIsFirstValue}" TextColor="Gray" HorizontalOptions="EndAndExpand" IsEnabled="{Binding IsThisEnabled}" Margin="0,0,10,0" />  

<renderer:CustomKeyEntry x:Name="SecondValue" Text="{Binding CurrentItem.SecondValue}" HeightRequest="40" WidthRequest="250" BackgroundColor="#FFFFFF"  Margin="15, 0" TextColor="Black" ReturnType="Next"/> 

ViewModel:

private Boolean _secondValueIsFirstValue= false;

    public Boolean SecondValueIsFirstValue
    {
        get { return _secondValueIsFirstValue; }
        set
        {                
            if (_secondValueIsFirstValue!= value)
            {
                if (value)
                {
                    CurrentItem.SecondValue = CurrentItem.FirstValue;
                    OnPropertyChanged();
                }                       
              SetProperty(ref _secondValueIsFirstValue, value);                                     
            }               
        }
    }

private ItemDTO _currentItem;
public ItemDTO CurrentItem
        {
            get { return _currentItem;}
            set { SetProperty(ref _currentItem, value); }
        }

 //DTO Class
 public class ItemDTO : INotifyPropertyChanged    
    {
        public event PropertyChangedEventHandler PropertyChanged;                     
        ....
    }

Ответы [ 3 ]

0 голосов
/ 06 марта 2019

Я не был уверен, что вам нужен точный код или руководство - если вам нужен точный код для довольно простой задачи, требующей тщательного написания, это не сайт, где кто-то другой будет писать ваш код, и вопрос должен бытьзакрыто.

Итак, при условии, что вы хотите получить руководство, вам в основном необходимо иметь двухстороннюю привязку для записей.Когда они будут изменены, он активирует сеттеры в вашей ViewModel.Там вам нужно активировать расчет нового итога, а затем использовать повышение PropertyChanged для обновления значения.

Если вы ничего не поняли из вышеперечисленного, вам нужно потратить некоторое время на чтение о MVVM, прежде чем задавать дополнительные вопросы..

0 голосов
/ 28 марта 2019

Мне пришлось обновить пакет Fody NuGet.

0 голосов
/ 06 марта 2019

Вот кое-что, что может вам помочь, вы можете связать метки в yaml, есть разные режимы, такие как: OneWay, TwoWay, ... вы можете узнать больше о привязках по этому URL: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/binding-mode

Это начало ответа для метки:

{Binding CurrentItem.Amount,Mode=TwoWay}

Надеюсь, это поможет вам

Хорошего дня

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