Отображение данных ListView в 2 столбцах с использованием Xamarin кроссплатформенного C # Visual Studio 2019 - PullRequest
1 голос
/ 05 июня 2019

Я использую Visual Studio 2019 для разработки кроссплатформенного мобильного приложения (iOS и Android) через Xamarin C #.

Я хочу отображать свои данные в ListView через 2 столбца.Но я понятия не имею, как это сделать.Насколько я знаю, я знаю, что ListView отображается только в 1 столбце.

public MainPage()
        {
            InitializeComponent();

            ObservableCollection<CardInfo> Name = new ObservableCollection<CardInfo>{
                new CardInfo{BrandName = "Brand 1"},
                new CardInfo{BrandName = "Brand 2"},
                new CardInfo{BrandName = "Brand 3"},
                new CardInfo{BrandName = "Brand 4"},
                new CardInfo{BrandName = "Brand 5"},
                new CardInfo{BrandName = "Brand 6"},
                new CardInfo{BrandName = "Brand 7"},
                new CardInfo{BrandName = "Brand 8"},
                new CardInfo{BrandName = "Brand 9"},
                new CardInfo{BrandName = "Brand 10"}

            };            

            ListViewName.ItemsSource = Name;

<ListView x:Name="ListViewName" HasUnevenRows="True" HorizontalOptions="Start" VerticalOptions="Start" VerticalScrollBarVisibility="Never" >

        <ListView.ItemTemplate>

            <DataTemplate>
                <ViewCell >
                    <Grid  >
                        <Grid.RowDefinitions>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                            <Frame Style="{StaticResource FrameStyle}" Grid.Row="0" Grid.Column="0"  >
                                <Label Text="{Binding BrandName}" Style="{StaticResource LabelStyle}"  />
                            </Frame>

                            <Frame Style="{StaticResource FrameStyle}" Grid.Row="0" Grid.Column="1"  >
                                <Label Text="{Binding BrandName}" Style= {StaticResource LabelStyle}"  />
                            </Frame>                
                    </Grid>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>

Ответы [ 3 ]

1 голос
/ 05 июня 2019

Если вам нужен просмотр списка с несколькими столбцами (т. Е. Несколькими элементами модели в строке), вы можете использовать библиотеку FlowListView .

<flv:FlowListView FlowColumnCount="2" FlowItemsSource="{Binding Name}" >

    <flv:FlowListView.FlowColumnTemplate>
        <DataTemplate>

            <Frame Style="{StaticResource FrameStyle}"  >
                   <Label Text="{Binding BrandName}" Style="{StaticResource LabelStyle}"  />
            </Frame>

        </DataTemplate>
    </flv:FlowListView.FlowColumnTemplate>

</flv:FlowListView>
0 голосов
/ 05 июня 2019

Да, у вас может быть несколько столбцов, все это контролируется тем, как вы кодируете дизайн шаблона элемента представления списка, используя такие свойства, как ширина и минимальная ширина.Вы также можете использовать сетку в шаблоне элемента, которая поможет вам позаботиться о ней.

Вот хороший пример из официальной документации Microsoft Xamarin, чтобы помочь вам.

0 голосов
/ 05 июня 2019

Вам не хватает свойства Value внутри класса CardInfo.Потому что это то, что ищет линия

<Label Text="{Binding Value}" Style= {StaticResource LabelStyle}"  />

.BindingContext - это объект, который нужно представить из ItemsSource (в вашем случае ItemsSource - это Name ObserveableCollection) по умолчанию в элементе ListView.Так что это CardInfo объект.CardInfo в вашей коллекции ObserveableCollection не имеют этого свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...