Массив строки, не привязанной к просмотру списка - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь привязать массив к представлению списка. Это не является обязательным и показывает пустым. Я использовал класс Model для размещения массива.

Просмотр модели:

public class RunningLateOptions
    {
      public string[] runningLateOptions = new[] { "30 Mins", "1 Hour", "1:30 Hour", "2 Hours" };
        public string[] runningLateOption
        {
           get{ return runningLateOptions; }
        }
    }

Код XAML:

<ListView x:Name="RunningLateOptions" ItemsSource="{Binding RunningLateOptions}" ItemSelected="runningLateSelectedItem">
     <ListView.ItemTemplate>
        <DataTemplate>
          <Label x:Name="listItems" Text="{Binding runningLateOption}" HorizontalTextAlignment="Center"/>
        </DataTemplate>
     </ListView.ItemTemplate>
</ListView>

Я не могу понять, что с этим не так. Помоги мне.

Ответы [ 3 ]

1 голос
/ 21 января 2020

Тип ItemsSource из ListView или CollectionView должен быть списком, который реализует интерфейс IEnumerable .

Поэтому мы обычно устанавливаем его как ObservableCollection<T> или List<T>.

В вашем случае вы можете установить ItemsSource для ListView следующим образом:

public ObservableCollection<string> RunningLateOptions {get; set;}

В ObservableCollection реализован интерфейс INotifyPropertyChanged. Поэтому вам больше не нужно его реализовывать.

Для получения более подробной информации о ListView вы можете обратиться к https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/listview/data-and-databinding

<ListView x:Name="RunningLateOptions" ItemsSource="{Binding RunningLateOptions}" ItemSelected="runningLateSelectedItem">
   <ListView.ItemTemplate>
       <DataTemplate>
           <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
              <Label x:Name="listItems" Text="{Binding runningLateOption}" HorizontalTextAlignment="Center"/>
           </StackLayout>
       </DataTemplate>
   </ListView.ItemTemplate>
</ListView>
1 голос
/ 21 января 2020

Я дал массив строк в CS-файле и привязал его к списку с помощью itemsource. Я не использовал модель View здесь.

Код CS:

string[] runningLateOptions = { "30 Mins", "1 Hour", "1:30 Hour", "2 Hours"  };
RunningLateOptions.ItemsSource = runningLateOptions;

Код XAML:

<ListView x:Name="RunningLateOptions" ItemsSource="{Binding Items}" ItemSelected="runningLateSelectedItem">
   <ListView.ItemTemplate>
     <DataTemplate>
        <ViewCell>
          <Label BackgroundColor="Transparent" x:Name="listItems" Text="{Binding}" TextColor="Black" HorizontalOptions="Center"></Label>
         </ViewCell>
     </DataTemplate>
   </ListView.ItemTemplate>
</ListView>

TextCell не предоставляет атрибут HorizontalTextAlignment. Вот почему я использовал вид ячейки для метки.

Спасибо за помощь. Нажмите здесь, чтобы увидеть вывод

1 голос
/ 21 января 2020

Вам необходимо изменить xaml следующим образом: -

<ListView x:Name="RunningLateOptions" ItemsSource="{Binding runningLateOption}" ItemSelected="runningLateSelectedItem">
     <ListView.ItemTemplate>
        <DataTemplate>
          <Label x:Name="listItems" Text="{Binding .}" HorizontalTextAlignment="Center"/>
        </DataTemplate>
     </ListView.ItemTemplate>
</ListView>

Дайте мне знать, если у вас возникнут дополнительные трудности.

...