我正在开发一个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); }
}
由于
答案 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>