我正在使用C#和XAML创建WP8.1应用
我有一个ListView,其中ListViewItems包含一个TextBlock。
TextBlocks有Tapped =""事件处理程序,但是我想在点击其中一个TextBlock时停止选择单元格。
设置
TappedRoutedEventArgs.Handled = true;
没有停止选择ListViewItem。
(由于层次结构,我无法遍历TextBlocks父元素以获取ListViewContainer)。
最好的方法是什么?
答案 0 :(得分:2)
好的,这就是我如何解决这个问题。
XAML:
$('body').on('click', '#Export', function(e) {
$('#loading').show();
@*/*----if using ajax: spinner loads and hides but dialog box doesn't show up-------*/
$.ajax({
url: '@Url.Action("ExportToWord", "Export")',
cache: false,
data: { customerId: custId, solutionId: solId },
success: function(result) {
window.open(result); // doesn't work
$('body').find('#loading').hide();
},
error: function(r) {
}
});*@
});
C#
<ListView IsItemClickEnabled="True" ItemClick="ItemClickHandler" SelectionMode="None">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="SomeText" Tapped="TextTapped" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
因此,通常,ItemClickHandler将首先执行,但我们会延迟此事件,因此可以执行另一个事件。如果执行了任何tapped事件,我们只会说:&#34;好的,我们将执行此代码,无需执行ItemClick事件。&#34;
答案 1 :(得分:2)
在控件上使用属性IsHitTestVisible =“False”。鼠标事件将通过它。
答案 2 :(得分:1)
我对ListViewItem
上的自定义控件遇到了同样的问题。我覆盖了OnPointerPressed
事件并将其标记为已处理的事件,这使得listview
无法接收选择事件。
protected override void OnPointerPressed(PointerRoutedEventArgs e)
{
base.OnPointerPressed(e);
e.Handled = true;
}
以上将在派生您自己的控件时起作用,但您可以将事件挂钩到任何控件上并将其标记为处理类似
的处理<TextBlock Text="whatever" Tapped="UIElement_OnTapped"
PointerPressed="UIElement_OnPointerPressed"/>
然后在代码中
private void UIElement_OnTapped(object sender, TappedRoutedEventArgs e)
{
e.Handled = true;
}
private void UIElement_OnPointerPressed(object sender, PointerRoutedEventArgs e)
{
e.Handled = true;
}
答案 3 :(得分:0)
当点击文本块列表视图选择时,在文本块点击事件之前引发更改事件(因此1. SelectionChanged事件比文本块点击)。这就是选择项目更改事件的方式将始终在文本块点击时触发。如果我们使用按钮控件(任何具有轻击操作的控件),它将提升按钮点击事件但不会引发选择更改事件。
在你的情况下,你可以实施一些黑客攻击。喜欢继续选择更改事件中的选择,并在事件到达文本块点击事件时还原选择。
希望这有帮助
答案 4 :(得分:0)
如果您不想选择ListView项目,我认为您可以尝试在IsItemClickEnabled property的帮助下完成:
默认情况下,用户可以通过点击或单击来选择视图中的项目。您可以更改此行为以使用户交互触发单击事件,而不是触发项目选择。
如果将IsItemClickEnabled属性设置为true,则必须将SelectionMode属性设置为ListViewSelectionMode.None。处理ItemClick事件以响应用户交互。