2017-02-19 3 views
0

Я работаю над интерфейсом XF, где у меня есть Listview внутри, у меня есть Stepper Control. Я связывание ListView с помощью ItemSource PropertyStepper Inside Listview не отображает добавочное значение правильно

<ListView ItemsSource="{Binding TicketList,Mode=TwoWay}" > 

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

<Entry Text="{Binding SelectedQuantity,Mode=TwoWay}"></Entry> 
<Stepper Increment="1" Maximum="{Binding AvailableTickets}" Minimum="0" 
         Value="{Binding SelectedQuantity,Mode=TwoWay}"></Stepper> 

Элементы управления загружаются хорошо, с правильными значениями. Однако, когда я пытаюсь увеличить Stepper, я вижу, что Stepper кажется работающим (он достигает max/min и grays out), но я не могу отразить добавочное значение в поле ввода.

Может ли кто-нибудь помочь мне понять, как я могу изменить значение в Entry Control, отражающем значение в Stepper?

Я использую Prism и в идеале предпочитаю привязки к написанию кода C# для управления ValueChange Evenet.

Update

Добавление Код модели

public class TicketModel 
{ 

    public int SelectedQuantity { get; set; } 

} 

В коллекции, которая связана с ListView определяется как

 private ObservableCollection<TicketModel> _TicketList; 
    public ObservableCollection<TicketModel> TicketList 
    { 
     get { return _TicketList; } 
     set { SetProperty(ref _TicketList, value); } 
    } 

Благодарности

+0

ли ваша модель реализации INotifyPropertyChanged? – Jason

+0

Привет Jaison, infact Я использую Prism, и свойства используют SetProperty. –

+0

Я бы установил точку останова в getter/setter свойства SelectedQuantity и удостоверился, что код запускается, а также искать ошибки привязки в вашем отладчике. –

ответ

1

Вы должны поднять имущество на изменилось ваш SelectedQuantity p roperty, ObservableCollection только делает это так, чтобы ListView отвечал на добавляемые и удаляемые элементы из вашей коллекции, он ничего не делает для отдельных свойств в элементах вашей коллекции. Кроме того, привязка TwoWay к ItemsSource не будет иметь никакого эффекта, и нет никакой причины сделать это привязкой TwoWay.

Вот мой код, который работал для меня:

public class MainViewModel : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    int selectedQuantity; 
    public int SelectedQuantity 
    { 
     get 
     { 
      return selectedQuantity; 
     } 
     set 
     { 
      if (selectedQuantity != value) 
      { 
       selectedQuantity = value; 
       PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("SelectedQuantity")); 
      } 
     } 
    } 
} 

и мой XAML:

<StackLayout> 
    <Entry Text="{Binding SelectedQuantity,Mode=TwoWay}"></Entry> 
    <Stepper Increment="1" Maximum="10" Minimum="0" 
          Value="{Binding SelectedQuantity,Mode=TwoWay}"></Stepper>  
    </StackLayout> 
+0

Привет, Билл, На самом деле SelectedQuantity не реализован как свойство. Это свойство sub от Model из TicketList ObservableCollection , которое связывается с Listview. Как я уже упоминал, шагомер находится внутри списка. –

+0

Отредактировал мой ответ на основе вашего обновленного вопроса. –

+0

Спасибо, Билл, что работает. –

Смежные вопросы