Xamarin Expander、Collectionview 和 Swipeview

Xamarin Expander, Collectionview, and Swipeview

我正在努力设计具有三个不同分组的 UI:

  1. 前 3 名
  2. 好友
  3. 所有联系人

已订阅,所有联系人都将成为大名单。我的第一遍如下:

    <Expander>
    <Expander.Header>
        <Label
            FontAttributes="Bold"
            FontSize="Medium"
            Text="Top 3" />
    </Expander.Header>
    <Expander.Content>
        <CollectionView ItemsSource="{Binding MyContacts}">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <StackLayout>
                        <SwipeView>
                            <SwipeView.LeftItems>
                                <SwipeItem BackgroundColor="Aquamarine" Text="Un Favorite" />
                            </SwipeView.LeftItems>
                            <SwipeView.Content>
                                <Label Text="{Binding DisplayName}" />
                            </SwipeView.Content>
                        </SwipeView>
                    </StackLayout>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
    </Expander.Content>
</Expander>
<Expander>
    <Expander.Header>
        <Label
            FontAttributes="Bold"
            FontSize="Medium"
            Text="Friends" />
    </Expander.Header>
    <Expander.Content>
        <CollectionView ItemsSource="{Binding UppContacts}">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <StackLayout>
                        <SwipeView>
                            <SwipeView.LeftItems>

                                <SwipeItem BackgroundColor="Brown" Text="Fav" />

                            </SwipeView.LeftItems>
                            <SwipeView.Content>
                                <Label Text="{Binding DisplayName}" />
                            </SwipeView.Content>
                        </SwipeView>
                    </StackLayout>
                </DataTemplate>
            </CollectionView.ItemTemplate>
        </CollectionView>
    </Expander.Content>
</Expander>

但我似乎无法在一个页面中放置多个扩展器。当我一次做一个时 - 一切都按预期工作。

当您说页面上不能有多个扩展器时,您的意思是您收到一条错误消息,说的是“属性“内容”已设置更多不止一次”?

如果是这种情况,那么您可以通过将所有扩展器包装在一个容器中来简单地解决这个问题。

例如:

<StackLayout>
        <Expander>
            <Expander.Header>
                <Label
                    FontAttributes="Bold"
                    FontSize="Medium"
                    Text="Top 3" />
            </Expander.Header>
            <Expander.Content>
                <CollectionView ItemsSource="{Binding MyContacts}">
                    <CollectionView.ItemTemplate>
                        <DataTemplate>
                            <StackLayout>
                                <SwipeView>
                                    <SwipeView.LeftItems>
                                        <SwipeItem BackgroundColor="Aquamarine" Text="Unfavorite" />
                                    </SwipeView.LeftItems>
                                    <SwipeView.Content>
                                        <Label Text="{Binding DisplayName}" />
                                    </SwipeView.Content>
                                </SwipeView>
                            </StackLayout>
                        </DataTemplate>
                    </CollectionView.ItemTemplate>
                </CollectionView>
            </Expander.Content>
        </Expander>
        <Expander>
            <Expander.Header>
                <Label
                    FontAttributes="Bold"
                    FontSize="Medium"
                    Text="Friends" />
            </Expander.Header>
            <Expander.Content>
                <CollectionView ItemsSource="{Binding UppContacts}">
                    <CollectionView.ItemTemplate>
                        <DataTemplate>
                            <StackLayout>
                                <SwipeView>
                                    <SwipeView.LeftItems>

                                        <SwipeItem BackgroundColor="Brown" Text="Fav" />

                                    </SwipeView.LeftItems>
                                    <SwipeView.Content>
                                        <Label Text="{Binding DisplayName}" />
                                    </SwipeView.Content>
                                </SwipeView>
                            </StackLayout>
                        </DataTemplate>
                    </CollectionView.ItemTemplate>
                </CollectionView>
            </Expander.Content>
        </Expander>
    </StackLayout>