Stepview Inside Listview没有正确显示递增值

时间:2017-02-19 14:45:37

标签: xamarin xamarin.forms

我正在开发一个XF用户界面,我在其中有一个Listview,我有一个步进控件。我正在使用ItemSource属性绑定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值的值吗?

我正在使用Prism,理想情况下更喜欢使用绑定编写C#代码来操作ValueChange Evenet。

更新

添加型号代码

    public class TicketModel
{

    public int SelectedQuantity { get; set; }

}

绑定到ListView的Collection定义为

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

由于

1 个答案:

答案 0 :(得分:1)

您需要在SelectedQuantity属性上更改属性,ObservableCollection只会使ListView自动响应从您的集合中添加和删除的项目,它不会对集合中项目中的各个属性执行任何操作。您对ItemsSource的TwoWay绑定也没有任何影响,也没有理由将其作为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>