【问题标题】:ListView Xamarin not Binding when adding item添加项目时 ListView Xamarin 未绑定
【发布时间】:2017-01-27 00:17:15
【问题描述】:

我正在使用 XF 应用程序中的 ListView 控件。我的 XAML 代码如下所示。

    <ListView  ItemsSource="{Binding RechargeList}" HasUnevenRows="True" VerticalOptions="FillAndExpand">
  <ListView.ItemTemplate>
    <DataTemplate>
      <TextCell Text="{Binding Path=SelectedParkingID}" TextColor="Red" />
    </DataTemplate>
  </ListView.ItemTemplate>
</ListView>

虽然我背后的代码看起来像

    private ObservableCollection<Recharge> _RechargeList = new ObservableCollection<Recharge>();
    public ObservableCollection<Recharge> RechargeList
    {
        get
        {
            return _RechargeList;
        }
        set
        {
            SetProperty(ref _RechargeList, value);
        }

    }           

我在 DelegateCommand 事件中将项目添加到集合

RechargeList.Add(new Recharge() { SelectedParkingIDParkingID = ParkingID, RechargeAmount = double.Parse(RechargeAmount), BalanceAmount = 10 });

但是,Listview 无法刷新。有人可以帮我吗?

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    看来你有错别字

    <TextCell Text="{Binding Path=SelectedParkingID}" TextColor="Red" />
    

    应该是

    <TextCell Text="{Binding Path=SelectedParkingIDParkingID }" TextColor="Red" />
    

    基于您的模型的外观。如果您尝试绑定到不存在的属性,它会轻轻失败。因此,您正在添加一个项目,但 TextCell 没有呈现,因为它没有内容。

    【讨论】:

      【解决方案2】:

      请尝试在你的类中实现 INotifyPropertyChanged 接口。

      public class Data : INotifyPropertyChanged
      {
       // boiler-plate
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null) handler(this, new   PropertyChangedEventArgs(propertyName));
      }
      protected bool SetField<T>(ref T field, T value, string propertyName)
      {
          if (EqualityComparer<T>.Default.Equals(field, value)) return false;
          field = value;
          OnPropertyChanged(propertyName);
          return true;
      }
      
         // props
        private string name;
        public string Name
        {
          get { return name; }
          set { SetField(ref name, value, "Name"); }
        }
      }
      

      每个属性都类似于:

      private string name;
      public string Name
      {
          get { return name; }
          set { SetField(ref name, value, "Name"); }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-26
        • 2019-03-25
        • 1970-01-01
        相关资源
        最近更新 更多