【发布时间】:2013-07-11 15:05:55
【问题描述】:
我正在使用C# 和XAML 开发一个Windows 商店应用程序。我正在使用ListView 来显示数据集合。
在ListView 内,我有一个数据模板,其中包含网格和网格中的 TextBlock。我想在不选择父 ListView 项目的情况下点击/单击 TextBlock 并执行操作,因为我已经有事件来处理选定的 ListView 项目。我不希望两者重叠。
提前感谢您的任何回复。
【问题讨论】:
我正在使用C# 和XAML 开发一个Windows 商店应用程序。我正在使用ListView 来显示数据集合。
在ListView 内,我有一个数据模板,其中包含网格和网格中的 TextBlock。我想在不选择父 ListView 项目的情况下点击/单击 TextBlock 并执行操作,因为我已经有事件来处理选定的 ListView 项目。我不希望两者重叠。
提前感谢您的任何回复。
【问题讨论】:
所以您希望在点击其中一部分时能够选择ListViewItem,而不是TextBlock?如果是这种情况,请在TextBlock 的Tapped 事件中添加e.Handled = true;。这应该使它不会被进一步路由到父ListView。
您可以做的另一件事(这可能是您想对 ListViewItems 执行的任何操作的更通用解决方案)是不使用 SelectionChanged 事件,而是使用 @ 处理所有事情987654328@。然后您可以推断该事件的OriginalSource 是否确实是您的TextBlock。然后,如果不是TextBlock,则更改父ListView 的SelectedItem。
检查原始来源的示例
public static void ItemClickEvent(object sender, ItemClickEventArgs e)
{
if(e.OriginalSource is TextBlock)
DoNothingOrMaybeTextBlockEvent();
else
{
ListView.SelectedItem = e.ClickedItem;
}
}
希望这会有所帮助。
编辑:为 OriginalSource 检查添加了一些示例代码
【讨论】:
ItemClickEventArgs的OriginalSource,看看它是否是你的TextBlock。