我有一个嵌套的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,它可以正常工作。我似乎无法找出原因。
答案 0 :(得分:0)
您在这里遇到的问题是,您正在设置包含解决方案其余部分的StackPanel(在外部gridview中)的可见性。你必须将它看作盒子,其中的所有东西都会受到父母的影响。
制表是帮助您了解哪个块包含哪些块的好方法,在您的示例中,您可以清楚地看到您的GridView包含一个东西,即DataTemplate。此DataTemplate还包含一个StackPanel,依此类推。在您的情况下,您的StackPanel包含其他所有内容,因此如果您隐藏它,您也会隐藏其中的所有内容。
我认为你真正想要的是隐藏“外部GridView”中的按钮,在这种情况下,你应该设置“标题”按钮的可见性,而不是设置整个StackPanel的可见性。
剪切并粘贴代码:
Visibility="{Binding Path=HideInUI, Converter={StaticResource InverseBooleanToVisibilityConverter}}"
从你的StackPanel到你的“标题”按钮的应该可以解决问题。