2009-08-27 14 views
8

常に表示される垂直スクロールバーを持つWPF ListViewを使用しています。 ListViewにMouseLeftButtonUpイベントハンドラがあります。ハンドラは、何もしないときに垂直スクロールバーがクリックされたとき、すなわちListViewボックスにスクロールするのに十分なアイテムがないときを除いて、正しく機能しています。WPF stop ListViewスクロールバーのクリック

この場合、ユーザーが垂直スクロールバーをクリックして画面のすぐ外にアイテムがないことを確認するだけで何も起こりません。しかし、ListViewはMouseLeftButtonUpイベントを発生させます。垂直スクロールバーに何らかの作業がある場合、イベントは発生しません。ここで

<ListView MouseLeftButtonUp="DoSomething_MouseLeftButtonUp" SelectionMode="Single" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Width="170" Header="Venue" DisplayMemberBinding="{Binding Path=Venue}" /> 
    </GridView> 
    </ListView.View> 
</ListView> 

垂直スクロールバーがスクロールバーが何かないようにすべての作業を持っているかどうかのirespectiveをクリックしたときに発火のMouseLeftButtonUpイベントを防ぐために、とにかくあり、私のsimplifiewd XAMLのですか?

答えて

4

これはthis questionと似ていますが、答えは同じです。 MouseLeftButtonUpハンドラで、MouseButtonEventArgs.OriginalSourceプロパティを確認します。クリックが発生した場所がわかります

if (e.OriginalSource is TextBlock || e.OriginalSource is Border) 
{ 
    // do your stuff 
} 
+0

私自身のGridViewでは、画像、テキストブロック、テキストブロックとランスを含む多くの列があります。それらをすべてチェックするはずですか? –

2

は、ListBoxのために私は次のコードを使用しました。しかし、これはそうでした:

5

他の回答のどちらが原因ListBoxItemで複雑なスタイリングの私の場合で働いていた:

+0

これは機能します。ありがとう。 – SteveP

+0

これは私にとっても有効です。リストボックス内の他のコントロールのため、他の回答は機能しません。ありがとう – superstar