我有ListBox
分组和排序
<Style x:Key="ContainerStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander Header="{Binding Name}" IsExpanded="True">
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<ListBox x:Name="contactsList" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.GroupStyle>
<GroupStyle ContainerStyle="{StaticResource ContainerStyle}"/>
</ListBox.GroupStyle>
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}" >
<EventSetter Event="MouseDoubleClick" Handler="contactsList_MouseDoubleClick" />
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Image}" Margin="0,0,5,17"/>
<StackPanel Height="Auto" >
<TextBlock Text="{Binding Name}" FontWeight="Medium" Height="20" />
<TextBlock Text="{Binding StatusDesc}" Height="Auto" FontSize="11" Foreground="#FF3C3C3C"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
结果是ListBox
,如下所示:
+ away
- contact one
- contact two
+ unavailable
- contact three
- contact four
- contact five
我可以扩展和折叠这些群组。
接下来,通过双击鼠标,我打开新窗口并激活它
private void contactsList_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
if (contactsList.SelectedValue != null)
{
//open new window code
}
}
但是在事件结束后,我将失去对已打开窗口的关注,并专注于ListBox
的窗口。
我试图通过在MouseDoubleClick
上添加事件“ListBox
”来执行此操作,但也可以通过点击标题来调用它。
例如: 我选择“联系一个”(一键,而不是双)然后我想折叠和扩展组不可用。选择“联系一个”仍然存在,并且事件火灾与联系一个属性..
也许有选项来处理点击标题?如果是这样,我可以取消选择ListBox