簡體   English   中英

為ListView實現雙擊事件

[英]Implementing double-click event for ListView

我已經看到了很多有關如何為每個ListView項添加雙擊事件的示例,但是我不知道如何將其實現到我的代碼中。 到目前為止,我發現的最好的例子是MS文檔中的這個例子,但它仍然不能幫助我解決這個問題:

<ListView Name="listViewItem" ClipToBounds="True" VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" SizeChanged="ListView_SizeChanged" TextOptions.TextHintingMode="Animated" Margin="0,0,117,0">
            <ListView.View>
                <GridView AllowsColumnReorder="False">
                    <GridViewColumn Header="Task ID" Width="0">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding TaskID}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Tast Title" Width="150">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding TaskTitle}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Task Deadline" Width="275">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding TaskDeadline}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Task Group" Width="150">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding TaskGroup}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Task Contact" Width="200">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding TaskContact}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Header="Task Workers" Width="200">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding TaskWorkers}" TextWrapping="Wrap" />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                </GridView>
            </ListView.View>
        </ListView>

我有一個幫助程序類,可在加載事件中設置值->

public void GetGridTasks(ref ListView listViewItem)
        {
            SqlCommand sqlCommandRefresh = new SqlCommand("", dataconnection);

            sqlCommandRefresh.CommandText = "SELECT TaskID, TaskTitle, TaskDeadline, TaskGroup, TaskContact, TaskWorkers FROM Tasks";

            SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlCommandRefresh);
            DataTable dt = new DataTable("Tasks");
            sqlAdapter.Fill(dt);

            foreach (DataRow dr in dt.Rows)
            {
                dr["TaskWorkers"] = dr["TaskWorkers"].ToString().Replace("||", ", ");
            }

            listViewItem.ItemsSource = dt.DefaultView;
        }

這基本上是ListView內GridView內的TextBlocks。 真的不能把我的頭纏住解決這個爛攤子。

只需使用ListView中的MouseDoubleClick事件。

例:

<ListView MouseDoubleClick="ListView_MouseDoubleClick">
//Items here
</ListView>

在后面的代碼中,您只需為此添加一個事件處理程序

void ListView_MouseDoubleClick(object sender, MouseButtonEventArgs e){
    var item = ((FrameworkElement) e.OriginalSource).DataContext
    var myItem = item as *CastToWhateverTypeYouNeed*
    if (item != null){
        //Here you have your item
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM