【问题标题】:Dynamic Horizontal List View in xamarin formsxamarin 表单中的动态水平列表视图
【发布时间】:2020-01-12 21:44:29
【问题描述】:

我需要在我的项目中集成动态水平列表视图。我在网站上的博客下面发现了这个概念。但是我混淆了这段代码以集成到我的项目中。请向任何人建议我的想法。我需要这种图像类型的网格或水平列表视图(https://i.stack.imgur.com/OvJZE.png)。

Mainpage.xaml.cs

public void SetupUserStack()
{


    ---------- issue in _itemSelectCommand in my code

    cButtonList.Add(new CircleButton(_itemSelectCommand)

     { CircleSize = otherCircleSize, CircleFontSize = 35, Text = initials, BackgroundColor = Color.White, TextColor = ourBlue, BorderColor = ourBlue, BorderWidth = 1.5 });
    var b2 = new Button() { Text = lname, TextColor = ourBlue };

    //otherGrid.Children.Add(LargeCB, 0, 0);


    otherGrid.Children.Add(cButtonList[i], 0, 0);


    otherGrid.Children.Add(b2, 0, 1);


    UserStack.Children.Add(otherGrid);

}

我参考的博客:horizontal-list-view-with-circular-button-styling-in-xamarin-forms

【问题讨论】:

  • 你真正想要什么?水平列表视图?有什么要求吗?
  • 我附上了下面的博客网站以供参考水平列表视图你可以检查吗?
  • 我不知道如何将博客网站代码以 MVVM 结构集成到我的项目中
  • 使用 collectionView 代替,然后将 itemSource 绑定到 ViewModel 中的属性。
  • 你能给我一个想法,将下面的参考资料整合到我的项目中。

标签: xamarin.forms cross-platform


【解决方案1】:

这是实现相同目的的另一种方法。 Xamarin 表单现在支持 Bindable Layouts

XAML 代码:

 <ScrollView  
   Orientation="Horizontal" 
   HorizontalScrollBarVisibility="Default">
     <StackLayout Margin="20,0,20,0"
                    Orientation="Horizontal"
                    BindableLayout.ItemsSource="{Binding LogoImages}">
                    <BindableLayout.ItemTemplate>
                        <DataTemplate>
                            <Image
                                HeightRequest="25"
                                Margin="0,0,5,0"
                                Source="{Binding logoImage}">
                            </Image>
                        </DataTemplate>
                    </BindableLayout.ItemTemplate>
                </StackLayout>
            </ScrollView>

以下是示例的更多信息:

Bindable Layouts

【讨论】:

  • 你检查那个博客我需要那种水平滚动视图。但我不知道将博客代码MVVM流程集成到我的项目中。
  • 您没有动态设置所有内容。只需设计 XAML 并绑定模型列表。就是这样
  • 你能简单解释一下吗?因为我是 xamarin 的新手,这是我的第一个项目,所以只问你是否不介意请帮助我
  • devblogs.microsoft.com/xamarin/… 这里是可以帮助你的例子
【解决方案2】:

使用collectionView 创建水平列表会更简单快捷,例如:

<CollectionView ItemsSource="{Binding Monkeys}"
                ItemsLayout="HorizontalList">
    <CollectionView.ItemTemplate>
        <DataTemplate>
            <Grid Padding="10">
                <Grid.RowDefinitions>
                    <RowDefinition Height="35" />
                    <RowDefinition Height="35" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="70" />
                    <ColumnDefinition Width="140" />
                </Grid.ColumnDefinitions>
                <Image Grid.RowSpan="2"
                       Source="{Binding ImageUrl}"
                       Aspect="AspectFill"
                       HeightRequest="60"
                       WidthRequest="60" />
                <Label Grid.Column="1"
                       Text="{Binding Name}"
                       FontAttributes="Bold"
                       LineBreakMode="TailTruncation" />

                //...your layout

            </Grid>
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

Monkeys 应该是 ViewModel 中的列表。

您可以在这里查看带有 MVVM 结构的示例:collectionviewdemos

在您的链接博客中,他使用users.Count 动态创建网格,我认为很难将他的代码集成到 MVVM 结构中。

【讨论】:

  • 我不需要采样水平列表或收集视图。当按钮单击项目添加到水平列表中时,我需要动态。添加按钮也在水平列表中。如何做到这一点?
  • @jelinTirsha 当你点击添加按钮时,将新用户添加到博客中的_users并调用page.SetupUserStack(_users);。
  • 我已经集成了这个博客,但下面以某种方式将其称为我的代码 cButtonList.Add(new CircleButton(ItemSelectCommand) { CircleSize = otherCircleSize, CircleFontSize = 35, Text = initials, BackgroundColor = Color.White, TextColor = ourBlue, BorderColor = ourBlue, BorderWidth = 1.5 }); var b2 = new Button() { Text = lname, TextColor = ourBlue }; //otherGrid.Children.Add(LargeCB, 0, 0); otherGrid.Children.Add(cButtonList[i], 0, 0); otherGrid.Children.Add(b2, 0, 1); UserStack.Children.Add(otherGrid);
  • 你能编辑你的问题并在那里添加你的代码吗?告诉我们问题出在哪里以及您需要什么。
  • @jelinTirsha 我还是不明白你的意思,_itemSelectCommand 有什么问题?
猜你喜欢
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2019-04-01
  • 1970-01-01
  • 2016-12-06
  • 2014-05-12
相关资源
最近更新 更多