1

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

4

0 回答 0