双击ListBoxItem并进行分组

时间:2013-04-28 11:19:24

标签: c# wpf listbox double-click

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

0 个答案:

没有答案