【问题标题】:click a textblock without selecting the parent listview item单击文本块而不选择父列表视图项
【发布时间】:2013-07-11 15:05:55
【问题描述】:

我正在使用C#XAML 开发一个Windows 商店应用程序。我正在使用ListView 来显示数据集合。

ListView 内,我有一个数据模板,其中包含网格和网格中的 TextBlock。我想在不选择父 ListView 项目的情况下点击/单击 TextBlock 并执行操作,因为我已经有事件来处理选定的 ListView 项目。我不希望两者重叠。

提前感谢您的任何回复。

【问题讨论】:

    标签: xaml windows-store-apps


    【解决方案1】:

    所以您希望在点击其中一部分时能够选择ListViewItem,而不是TextBlock?如果是这种情况,请在TextBlockTapped 事件中添加e.Handled = true;。这应该使它不会被进一步路由到父ListView

    您可以做的另一件事(这可能是您想对 ListViewItems 执行的任何操作的更通用解决方案)是使用 SelectionChanged 事件,而是使用 @ 处理所有事情987654328@。然后您可以推断该事件的OriginalSource 是否确实是您的TextBlock。然后,如果不是TextBlock,则更改父ListViewSelectedItem

    检查原始来源的示例

    public static void ItemClickEvent(object sender, ItemClickEventArgs e)
    {
        if(e.OriginalSource is TextBlock)
            DoNothingOrMaybeTextBlockEvent();
        else
        {
            ListView.SelectedItem = e.ClickedItem;
        }
    }
    

    希望这会有所帮助。

    编辑:为 OriginalSource 检查添加了一些示例代码

    【讨论】:

    • 我将 ItemClick 用于 listview ,而不是 SelectionChanged。当我点击列表视图项内的文本块时,列表视图也会被点击,这是我想避免的。我只想点击文本块。
    • 检查ItemClickEventArgsOriginalSource,看看它是否是你的TextBlock
    • 是的,OriginalSource 是 TextBlock。
    • 我找到了一个解决方案,删除列表视图的父级的 clickevent,我发现这是不必要的。感谢您的帮助。
    • 没问题,很高兴您找到了解决方案!
    猜你喜欢
    • 2013-11-09
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多