WPF Listview项目已单击名称

WPF Listview项目已单击名称,wpf,listview,selecteditem,Wpf,Listview,Selecteditem,我有一个5列的列表视图。在第一列中,我插入一个图像,其中有一个事件MouseClicked事件。我想完成的是,当我单击第5行的图像时,获取第5行-第2列中项目的名称; 这是我目前的代码: <ListView x:Name="HistoryListB"> <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <S

我有一个5列的列表视图。在第一列中,我插入一个图像,其中有一个事件MouseClicked事件。我想完成的是,当我单击第5行的图像时,获取第5行-第2列中项目的名称; 这是我目前的代码:

<ListView  x:Name="HistoryListB">
    <ListView.ItemContainerStyle>

        <Style TargetType="{x:Type ListViewItem}">

            <Setter Property="Background" Value="#FF515050"/>
            <Style.Triggers>
                <Trigger Property="Control.IsMouseOver" Value="true">
                    <Setter Property="Background" Value="#FF515050"/>
                    <Setter Property="BorderBrush" Value="#FF3B3A3A"/>
                </Trigger>
            </Style.Triggers>
        </Style>

    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">

            <GridViewColumn Width="90" Header="Image" >

                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <Image Name="Favorite" Width="12" Height="12" Source="{Binding ImageSource}" MouseLeftButtonDown="Image_MouseLeftButtonDown" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>

            </GridViewColumn>

            <GridViewColumn Width="90" Header="Time Added" DisplayMemberBinding="{Binding Time}" />
            <GridViewColumn Width="110" Header="Status" DisplayMemberBinding="{Binding Status}"/>
            <GridViewColumn Width="290" Header="ItemTitle" DisplayMemberBinding="{Binding ItemTitle}"/>
            <GridViewColumn Width="50" Header="Duration" DisplayMemberBinding="{Binding Duration}"/>
        </GridView>
    </ListView.View>
</ListView>

您可以使用
图像的
标记
属性来保存
历史项目
,然后可以通过事件处理程序中的
发送者
参数进行访问

例如:

Xaml:


非常感谢你。这就成功了。但由于某些原因,image.Tag是if中的HistoryItems阻止了我的if。我删除了它,只检查图像是否为空并且工作正常。我会再给它一些迪金。再次感谢你。
public class HistoryItems
{
    public string Time { get; set; }
    public string Status { get; set; }
    public string ItemTitle { get; set; }
    public string Duration { get; set; }
    public ImageSource ImageSource { get; set; }
}

IList<HistoryItems> SHistoryItems { get; set; }
SHistoryItems = new List<HistoryItems>() {
    new HistoryItems () {
        Time = DateTime.Now.ToString("HH:mm:ss tt"),
        Status = "Started Playing : ",
        ItemTitle = StationL.StationName
    }
};

foreach (var item in SHistoryItems)
   HistoryListB.Items.Add(SHistoryItems);
private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    TextBlock1.Text = ?? THE NAME OF THE SECOND COLUMN IN THE SAME ROW ?? ;
}
<GridViewColumn.CellTemplate>
    <DataTemplate>
        <Image Name="Favorite" Width="12" Height="12" Source="{Binding ImageSource}" Tag="{Binding}" MouseLeftButtonDown="Image_MouseLeftButtonDown" />
    </DataTemplate>
</GridViewColumn.CellTemplate> 
private void Image_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    var image = sender as Image;
    if (image != null && image.Tag is HistoryItems)
    {
       TextBlock1.Text = (image.Tag as HistoryItems).ItemTitle;
    }
}