2013-03-06 97 views
1

林開發的WinRT應用程序內,有什麼我想要做的想法。我想在點擊列表的元素中顯示一個列表。所以當我點擊第一個列表中的一個項目時,那個項目中的列表就會展開。獲取控制的控制

<ListView x:Name="SectionListView" SelectionChanged="ListSelectionChanged"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <StackPanel> 
        <Grid> 
         <TextBlock Text="{Binding Name}" /> 
         <Image Source="ms-appx:///Assets/EmbossedEllipse.png" /> 
         <TextBlock Text="{Binding NumberOfQuestions}" /> 
        </Grid> 
       </StackPanel> 
       <ListView x:Name="SubMenu" ItemsSource="{Binding Branches}" Visibility="Collapsed"> 
        <ListView.ItemTemplate> 
         <DataTemplate> 
          <StackPanel> 
           <TextBlock Text="{Binding Name}" /> 
          </StackPanel> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

當我點擊「SectionListView」中的一個元素時,我希望該項目中的「SubMenu」可見。

感謝您的幫助!

回答

0

你可以使用一個轉換器來改變SubMenu的能見度情況。

編輯: 添加屬性來知道你的項目被選擇(一個布爾值)。

<ListView x:Name="SubMenu" ItemsSource="{Binding Branches}" Visibility="{Binding IsSelected, Converter={StaticResource BooleanToVisibilityConverter}}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Name}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

轉換器:

public sealed class BooleanToVisibilityConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     return (value is bool && (bool)value) ? Visibility.Visible : Visibility.Collapsed; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     return value is Visibility && (Visibility)value == Visibility.Visible; 
    } 
} 

希望它能幫助!

+0

好的,你能舉一些例子嗎? – 2013-03-06 10:42:33

+0

謝謝,但我需要知道如何使用IsSelected。我已經搜索了一下,並試圖找出但沒有運氣.. 錯誤:BindingExpression路徑錯誤:''IsSelected'屬性找不到'TillsynApplication.Classes.Checklist,TillsynApplication,Version = 1.0.0.0,Culture =中立,PublicKeyToken = null'。 BindingExpression:路徑= 'IsSelected' 的DataItem = 'TillsynApplication.Classes.Checklist,TillsynApplication,版本= 1.0.0.0,文化=中立,公鑰=空';目標元素是'Windows.UI.Xaml.Controls.ListView'(Name ='SubMenu');目標屬性是'可見性'(類型'可見性')' – 2013-03-06 13:03:07

+0

您的'CheckList'模型需要具有'IsSelected'屬性。如果你不想在你的模型中擁有這個屬性,請使用Anton Tykhyy的方式。 – skamlet 2013-03-06 13:13:06

0

使用ListBoxItem.IsSelected附加屬性,它只是爲了這個目的而引入的。這裏有一些讓你開始的XAML(如果你還沒有這樣做,可以在某個地方聲明一個BooleanToVisibilityConverter)。

<ListView x:Name="SubMenu" Visibility="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource BooleanToVisibilityConverter}}" ...