【问题标题】:Get element from selected listview row从选定的列表视图行中获取元素
【发布时间】:2023-03-08 15:40:02
【问题描述】:

我在 Xamarin.Forms 中有一个使用数据绑定的 ListView。我正在使用获取当前索引的 ItemSelected 事件。我想获取所选 ListView 行的价格属性。使用 Tracepoint,我看到了 e => SelectedItem => Price 中的值。

如何将其保存到变量中?我试过了:

double val = e.SelectedItem.Price;

但是,这不起作用。

“object”不包含“Price”的定义,并且找不到接受“object”类型的第一个参数的可访问扩展方法“Price”。

我想将所选 ListView 行的价格存储到一个变量中。谢谢你。

【问题讨论】:

    标签: c# listview xamarin.forms


    【解决方案1】:

    由于您使用了数据绑定,您应该处理 ViewModel 中的所有逻辑。

    <ListView ItemsSource="{Binding xxx}" SelectedItem="{Binding SelectItem,Mode=TwoWay}" >
    ...
    

    在视图模型中

    public class YourViewModel :INotifyPropertyChanged
    {
    
        public event PropertyChangedEventHandler PropertyChanged;
    
        protected virtual void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    
       
    
        private YourModel selectItem;
        public YourModel SelectItem
        {
            get
            {
                return selectItem;
            }
    
            set
            {
                if (selectItem!= value)
                {
                    selectItem= value;
                    NotifyPropertyChanged();
    
                   double val = selectItem.Price;
                   // do some thing you want here
                }
            }
        }
    
        //...
    }
    

    在您的情况下,Price 是模型的属性,而不是 SelectedItem 的属性。或者您可以改进您的代码,如下所示。但正如我所说,使用 MVVM 更好。

    var SelectItem = e.SelectedItem as YourModel;
    double val = SelectItem .Price;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多