如何选择展开组(列表视图)中的第一个项目
本文关键字:视图 第一个 项目 列表 何选择 选择 | 更新日期: 2023-09-27 18:22:44
有人能帮我解决这个问题吗(c#wpf):
我的Expander
(每组)有一个ListView
和这个Style
:
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="False">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
当用户展开Expander
时,我想选择展开组中的第一个项目。
我添加了这样的组(CustomerOrderList=ListView):
CustomerOrderList.ItemsSource = OrderDetails.DefaultView;
CollectionView cv = (CollectionView)CollectionViewSource.GetDefaultView(CustomerOrderList.ItemsSource);
PropertyGroupDescription pgd = new PropertyGroupDescription("OrderInfo");
cv.GroupDescriptions.Add(pgd);
这可能吗?
谢谢,Senne
是的,这是可能的。
包括Linq命名空间
using System.Linq;
处理扩展器的Expanded
事件
<Expander Expanded="GroupExpander_Expanded" IsExpanded="False" ... />
代码隐藏。。。
private void GroupExpander_Expanded(object sender, RoutedEventArgs e)
{
var expander = sender as Expander;
//Extract the group
var groupItem = expander.DataContext as CollectionViewGroup;
//Set the first item from the group to ListBox's Selected Item property.
CustomerOrderList.SelectedItem = groupItem.Items.First();
}
如果您使用MVVM,则使用附加属性行为将此功能封装到其中。
希望这有帮助,