2015-06-02 47 views
0

我有一個嵌套的gridview。可見性似乎存在問題。在下面的代碼中,OuterCollection和InnerCollection具有HideInUI屬性,我反向確定可見性(例如,如果爲true,隱藏)。嵌套的GridView可見性無法正常工作

但是,在第二個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> 

編輯

很抱歉的混亂。但是會發生什麼。

Ex。類別1具有項目1,項目2,項目3.如果項目1中的HideInUI爲true,則Item2和Item3也會隱藏。但是,如果項目2或項目3是HideInUI,它可以正常工作。我似乎無法找出原因。

+0

因此,您隱藏了嵌套在其中的第二個(按鈕)的父級(StackPanel),因此如果您隱藏父級,則兒童的可見性也會崩潰,這是預期的行爲。 –

回答

0

您在這裏遇到的問題是您正在設置包含解決方案其餘部分的StackPanel(在您的外部網格視圖中)的可見性。你必須把它看作盒子,它的一切都受到父母的影響。

製表是一種很好的方式,可以幫助您瞭解哪個塊包含什麼,在您的示例中,您可以清楚地看到GridView包含一件事,即DataTemplate。這個DataTemplate還包含一個是StackPanel的東西,等等。在你的情況下,你的StackPanel包含了所有其他的東西,所以如果你隱藏它,你也可以隱藏它。

我認爲你真正想要的是將按鈕隱藏在「外部GridView」中,在這種情況下,應該設置「標題」按鈕的可見性,而不是設置整個StackPanel的可見性。

剪切和粘貼代碼:

Visibility="{Binding Path=HideInUI, Converter={StaticResource InverseBooleanToVisibilityConverter}}" 

從您的StackPanel到你的「標題」按鈕應該做的伎倆。

相關問題