任何人都可以帮我解决这个问题(c#wpf):
我的ListView
Style
(每个群组)都有Expander
{/ 1}}:
<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
答案 0 :(得分:3)
是的,这是可能的。
包含Linq名称空间
using System.Linq;
处理Expander的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 ,请使用附加属性行为将此功能包装到其中。
希望这有帮助,