嵌套的GridView可见性无法正常工作

时间:2015-06-02 16:35:07

标签: xaml windows-store-apps

我有一个嵌套的gridview。可见性似乎存在问题。在下面的代码中,OuterCollection和InnerCollection具有HideInUI属性,我将其反转以确定可见性(例如,如果为true,则隐藏)。

但是,在第二个HideInUI中,如果第一个项目被隐藏,它似乎隐藏了其他所有内容。

    <GridView x:Name="GridView_Outer"
              InnerCollectionsSource="{Binding Path=OuterCollection}">
    <GridView.InnerCollectionTemplate>
        <DataTemplate>
            <StackPanel Visibility="{Binding Path=HideInUI, Converter={StaticResource InverseBooleanToVisibilityConverter}}">
                <Button Content="{Binding Path=Title}"
                        IsEnabled="False" 
                        Style="{StaticResource CategoryButton}"/>
                <GridView x:Name="GridView_Inner"
                      InnerCollectionsSource="{Binding Path=InnerCollection}">
                    <GridView.InnerCollectionTemplate>
                        <DataTemplate>
                            <Button Width="120"
                            Command="{Binding ElementName=GridView_Outer, Path=DataContext.SelectPaymentTypeCommand}"
                            CommandParameter="{Binding Path=PaymentAmountTypeID}"
                            Content="{Binding Path=ScreenTitle}"
                            Visibility="{Binding Path=HideInUI, Converter={StaticResource InverseBooleanToVisibilityConverter}}">
                            </Button>
                        </DataTemplate>

修改

很抱歉这个混乱。但是会发生什么。

实施例。类别1具有项目1,项目2,项目3.如果项目1中的HideInUI为真,则项目2和项目3也变为隐藏。但是如果Item 2或Item3是HideInUI,它可以正常工作。我似乎无法找出原因。

1 个答案:

答案 0 :(得分:0)

您在这里遇到的问题是,您正在设置包含解决方案其余部分的StackPanel(在外部gridview中)的可见性。你必须将它看作盒子,其中的所有东西都会受到父母的影响。

制表是帮助您了解哪个块包含哪些块的好方法,在您的示例中,您可以清楚地看到您的GridView包含一个东西,即DataTemplate。此DataTemplate还包含一个StackPanel,依此类推。在您的情况下,您的StackPanel包含其他所有内容,因此如果您隐藏它,您也会隐藏其中的所有内容。

我认为你真正想要的是隐藏“外部GridView”中的按钮,在这种情况下,你应该设置“标题”按钮的可见性,而不是设置整个StackPanel的可见性。

剪切并粘贴代码:

Visibility="{Binding Path=HideInUI, Converter={StaticResource InverseBooleanToVisibilityConverter}}"
从你的StackPanel到你的“标题”按钮的

应该可以解决问题。