2013-03-06 56 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}}" ...