我有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