2012-10-12 54 views
1

我有一个由mouseUp事件触发的函数。一切工作正常,除了有时没有检测到mouseUp事件。 事实上,我有一个列表视图,项目,当我选择一个项目,它会触发一个函数。但不总是。MouseUp事件并不总是触发

<ListView Margin="4" Grid.Row="1" Grid.ColumnSpan="2" x:Name="statinfoListview" 
    ItemsSource="{Binding Path=ExistingStateInfos, ElementName=Window}" 
    SelectedItem="{Binding Path=SelectedStateInfo, ElementName=Window}"> 
    <ListView.ItemTemplate> 
     <DataTemplate DataType="{x:Type States:StateInfo}"> 
      <TextBlock Text="{Binding Path=Name}" MouseUp="ApplyStateInfoNameToState_Click" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+1

也许你在释放按钮之前将鼠标拉出文本块?另外请注意,如果您位于文本的右侧,则可能不会单击文本块,它可能有助于将“Horizo​​ntalContentAlignment =”Stretch“”添加到ListView。 –

+0

是的,没错。非常感谢:) – Sheamus

+0

如果解决了这个问题,我会继续并添加一个答案。 –

回答

1

也许你在释放按钮之前将鼠标从文本块中拉出来?另外请注意,如果您位于文本右侧,您可能不会单击文本块,但可能有助于将Horizo​​ntalContentAlignment =“Stretch”添加到ListView。

0

由于VisualTree中的后代visual可以处理事件,因此您无法保证MouseUp处理程序将被调用。如果你想确保捕捉事件,你应该使用隧道事件(PreviewMouseUp)。

另一种方法是在后面的代码中使用AddHandler方法,并指定要管理处理的事件。

+0

感谢您的建议Sisyphe。我刚刚尝试了KDiTraglia的方式,并且暂时适用。如果测试没有结束,我会使用你的解决方案。 – Sheamus

相关问题