Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在列表中显示Object类型的属性_C#_Object_Xamarin_Xamarin.forms_Model Binding - Fatal编程技术网

C# 如何在列表中显示Object类型的属性

C# 如何在列表中显示Object类型的属性,c#,object,xamarin,xamarin.forms,model-binding,C#,Object,Xamarin,Xamarin.forms,Model Binding,我想用下面的方式显示化学物质的列表 问题是,在我看来,我没有表现出任何东西 当我打开ResultadosHDSViewModel时,构造函数中有以下方法 ObservableCollection<Sqs> sqss; public ObservableCollection<Sqs> Sqss { get { return sqss; } set { if (sqss !=

我想用下面的方式显示化学物质的列表

问题是,在我看来,我没有表现出任何东西

当我打开ResultadosHDSViewModel时,构造函数中有以下方法

  ObservableCollection<Sqs> sqss;   

  public ObservableCollection<Sqs> Sqss
  {
      get
   {
       return sqss;
   }
      set
      {
         if (sqss != value)
      {
          sqss = value;
          PropertyChanged?.Invoke(
                     this,
                     new PropertyChangedEventArgs(nameof(Sqss)));
       }
}
                }

         public ResultadosHDSViewModel()
         {           
                LoadSustancias();
         }

    public async void LoadSustancias()
    {                     

       var mainViewModel = MainViewModel.GetInstance();           

       var sustancias = mainViewModel.FabricanteForm.Results.Sqs.Select(c => c.Where(v => v.Column == 2)
                             .Select(u => u).ToList().FirstOrDefault());    

           foreach (var item in sustancias)
           {
                Sqss.Add(item); 
           }
    }
我的LINQ查询sustancias的结果是:

问题是,通过使用foreach来填充我的ObservableCollection Sqss,我的应用程序就会崩溃

我附加要存储数据值的视图 ResultadosHDSView.XAML:

<StackLayout 
        BindingContext="{Binding ResultadosHDS}"
        Padding="5"> 

        <ListView ItemsSource="{Binding Sqss}"
                  SelectionMode="None">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout Orientation="Horizontal" 
                                         VerticalOptions="CenterAndExpand" 
                                         Padding="16,0,0,0">
                            <Label Text="{Binding Value}" 
                                       HorizontalOptions="FillAndExpand"                                          
                                       VerticalOptions="CenterAndExpand" />
                            <Button 
                                    Text="VER"  
                                    HorizontalOptions="End"
                                    VerticalOptions="Center"                                   
                                    HeightRequest="35" 
                                    WidthRequest="55"
                                    Command="{Binding VerCommand}"/>
                            <Button 
                                    Text="HDS"   
                                    VerticalOptions="Center"                                        
                                    HeightRequest="35"
                                    WidthRequest="55"
                                    Command="{Binding HDSCommand}" />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

    </StackLayout>
我还附上了我所涉及的类的定义

 public class FabricanteFormResponse
    {
        [JsonProperty(PropertyName = "userMessage")]
        public string UserMessage { get; set; }

        [JsonProperty(PropertyName = "status")]
        public int Status { get; set; }

        [JsonProperty(PropertyName = "results")]
        public FabricanteForm Results { get; set; }
    }

public class FabricanteForm
    {
        [JsonProperty(PropertyName = "columns")]
        public List<int> Columns { get; set; }

        [JsonProperty(PropertyName = "sqs")]
        public List<List<Sqs>> Sqs { get; set; }
    }

 public class Sqs
    {
        [JsonProperty(PropertyName = "field")]
        public string Field { get; set;}

        [JsonProperty(PropertyName = "column")]
        public int Column { get; set; }

        [JsonProperty(PropertyName = "value")]
        public Object Value { get; set; }
    }
正如您所看到的,我的Object-Value属性是Object类型,它正是我想在视图的绑定中显示的属性


我做错了什么?Linq类型查询?我应该在扔掉物品之前扔掉它吗?我怎么做?有什么帮助吗?

既然您是从构造函数调用该方法,我将用以下内容替换foreach循环:

Sqss = new ObservableCollection<Sqs>(sustancias);
由于您使用的是FirstOrDefault,因此我认为可能存在没有第2列的项,因此如果您只想要不为null的项:

Sqss = new ObservableCollection<Sqs>(sustancias.Where(s => s != null));

您需要首先初始化SQS。sqss=新的可观测集合;在构造函数中?在方法中?在哪里@Jasonanywhere,但在你尝试使用它之前。构造器将是一个不错的选择。它的实现在下面的行Sqss=新的可观察收集物质中失败和爆发,谢谢你的帮助,但是我没有把数据保存到我的Sqss列表中@Skallfalls和burts不是有用的信息。如果它正在崩溃,导致崩溃的具体异常是什么?另外,您可能应该初始化sqss私有变量,而不是sqss公共属性。@Jason,是的,您可以调用私有字段。我使用了public属性,因为它发送了一个属性更改通知,但是因为它是从构造函数使用的,所以这无关紧要。
Sqss = new ObservableCollection<Sqs>(sustancias.Where(s => s != null));
    private void LoadSustancias()
    {