我正在开发一个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”可见。
感谢您的帮助!
发布于 2013-03-06 18:05:10
您可以使用转换器来更改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;
}
}希望它能帮上忙!
发布于 2013-03-06 19:08:05
使用ListBoxItem.IsSelected attached属性,它就是为了这样一个目的而引入的。这里有一些XAML供您入门(如果您还没有这样做,请在某个地方声明一个BooleanToVisibilityConverter )。
<ListView x:Name="SubMenu" Visibility="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource BooleanToVisibilityConverter}}" ...https://stackoverflow.com/questions/15242337
复制相似问题