隐藏自定义ContentView中的框架

时间:2017-11-11 14:45:39

标签: xaml xamarin.forms xamarin.forms.listview

我正在CardViewTemplate.xaml中使用名为ListView的内容视图页面来呈现一些包含两个框架的内容,其中一个框架应该是可见的而另一个框架不是同时显示的。

        <ContentView xmlns="http://xamarin.com/schemas/2014/forms"
                     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
        ...>
        <Frame  IsVisible="{Binding IsNotBreak}" IsClippedToBounds="True">
    .... content ....
        </Frame>
        <Frame IsVisible="{Binding IsBreak}" IsClippedToBounds="True">
    --content 2-
        </Frame>
      </ContentView>

和列表视图中使用的上面的页面将一些数据绑定并查看到listview,如下面的代码:

<ListView x:Name="listView" SelectedItem="{Binding SelcetedItem,Mode=TwoWay}" 
          RowHeight="-1" 
          ItemsSource="{Binding SelectedCard}" HasUnevenRows="True"   >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <Custom:CardViewTemplate/>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>

出乎意料的是,我的列表视图仅显示第二帧,它看起来像附加图像:

Frame 1 Doesn't view any Content

1 个答案:

答案 0 :(得分:0)

这是因为ContentView应该只有一个孩子,第二个Frame会覆盖第一个Frame

尝试添加AbsoluteLayoutGrid之类的视图容器来保存ContentView内的两个框架:

<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
                 xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    ...>
    <AbsoluteLayout>

        <Frame  IsVisible="{Binding IsNotBreak}" IsClippedToBounds="True">
    .... content ....
        </Frame>
        <Frame IsVisible="{Binding IsBreak}" IsClippedToBounds="True">
    --content 2-
        </Frame>

    </AbsoluteLayout>
</ContentView>