首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListViewItem上下文菜单从ListViewItem获取数据

ListViewItem上下文菜单从ListViewItem获取数据
EN

Stack Overflow用户
提问于 2012-01-09 18:23:16
回答 1查看 2.2K关注 0票数 0

我正在尝试创建一个上下文菜单,这样当您右键单击ListViewItem时,就会向用户显示一个选项列表。问题是,我无法在Click事件中获得链接到ListViewItem的引用项。

我想这可能是因为我把ContextMenu放在了错误的位置。我已经搜索和尝试了很长时间,但我认为这可能与我正在使用的DataTemplate有关,其中示例不在模板中。

代码语言:javascript
复制
<ListView Margin="0" Name="FileImagesListView"  VerticalAlignment="Top" Grid.Row="0">                             
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <EventSetter Event="Mouse.MouseEnter" Handler="MouseEnterPicFileListItem" />
            <EventSetter Event="Mouse.MouseLeave" Handler="MouseLeavePicFileListItem"/>          
        </Style>      
    </ListView.ItemContainerStyle>

    <ListView.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="{Binding Path=BorderBrushColourID, Converter={StaticResource BorderColourConverter}}" BorderThickness="3" CornerRadius="2">
                <StackPanel FlowDirection="LeftToRight"  Orientation="Vertical" Margin="3">
                    <Grid>
                        <TextBlock TextAlignment="Center" Text="{Binding Path=TimeAgo}" Margin="0,7" ></TextBlock>
                        <Label Style="{StaticResource CircularLabel}" HorizontalAlignment="Right" Height="35" Margin="0,-8,0,0" Content="{Binding Path=MatchedCount}" Visibility="{Binding Path=MatchedCount, Converter={StaticResource VisibleIfGreaterThanOne}}" ></Label>
                    </Grid>
                    <Image Name="FilePic" Height="Auto" Width="160" Source="{Binding Path=BitmapPicture}"></Image>
                </StackPanel>
            </Border>
        </DataTemplate>
    </ListView.ItemTemplate>

    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Margin="3" Orientation="Horizontal"></StackPanel>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-09 22:22:05

通常,您只需调用myListViewItem.DataContext并将其转换为应该是什么,就可以获得数据项。

代码语言:javascript
复制
private void ListViewItem_Click(object sender, EventArgs e)
{
    ListViewItem item = sender as ListViewItem;
    if (item == null) return;

    MyDataItem = item.DataContext as MyDataItem;

    // Do whatever here
}

另外,WPF ContextMenus与您的应用程序不共享相同的VisualTree,因此尝试将它们绑定到主UI的工作方式有所不同。很难说这是否与您的问题有关,因为我在您的问题中没有看到ContextMenuClick事件。

编辑如果您的ContextMenu位于ListBoxItem上,则需要参考ContextMenu的PlacementTarget以获取ContextMenu附加到的ListBoxItem

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8786931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档