Wpf listview项目对象双击

时间:2016-08-21 14:28:18

标签: wpf listview double-click

我有一个在窗口打开时动态创建的对象列表。例如:

    //Set content for listview sentitems
    List<email> _sentmails = _dataDC.emails.Where(u => u.from == _username).OrderByDescending(x => x.time).ToList();
    inbox.ItemsSource = _sentmails;

我的xaml:

    <TabItem Header="Inbox" Height="30">
        <TabItem.Content>
            <ListView  Name="inbox" BorderThickness="2" Margin="5,0,-5,0" >
                <ListView.View >
                    <GridView>
                        <GridViewColumn Header="Van" Width="70" DisplayMemberBinding="{Binding from}" />
                        <GridViewColumn Header="Onderwerp" Width="120" DisplayMemberBinding="{Binding subject}" />
                        <GridViewColumn Header="Op" Width="130" DisplayMemberBinding="{Binding time}" />

                    </GridView>
                </ListView.View>
            </ListView>
        </TabItem.Content>
    </TabItem>

当列表中的项目被双击时,我只想打开一个新窗口。对象被传递到新窗口,在那里我用它做一些事情。任何简单的解决方案?

2 个答案:

答案 0 :(得分:1)

使用ListView的MouseDoubleClick。

<强> XAML:

<ListView Name="inbox" BorderThickness="2" Margin="5,0,-5,0" MouseDoubleClick="ListView_MouseDoubleClick"> 

代码背后:

private void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
       var item = (sender as ListView).SelectedItem;
        if (item != null)
        {
            //use the item here and pass to the new window
            NewModal s = new NewModal(Email)item);
        }
}

答案 1 :(得分:1)

试试这个......

XAML

<ListView  Name="inbox" BorderThickness="2" Margin="5,0,-5,0" MouseDoubleClick="inbox_OnMouseDoubleClick">

C#

private void inbox_OnMouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    // Assumes your NewWindow class has a constuctor that takes the Email type.
    NewWindow window = new NewWindow((Email)inbox.SelectedItem);
    window.Show();
}
相关问题