2009-08-27 5 views
8

항상 볼 수있는 세로 스크롤 막대가있는 WPF ListView를 사용하고 있습니다. ListView에 MouseLeftButtonUp 이벤트 처리기가 있습니다. 아무 것도 할 수 없을 때 세로 스크롤 막대가 클릭 될 때를 제외하고는 핸들러가 제대로 작동합니다. 즉, ListView 상자에 스크롤 할 항목이 충분하지 않습니다.WPF stop ListView ScrollBar 발동 클릭

사용자가 화면에서 벗어난 항목이 없는지 확인하기 위해 수직 스크롤 막대를 클릭해도 아무런 변화가 없습니다. 그러나 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

, 나는 실행합니다 ...와 이미지, textblocks, textblocks을 포함하는 많은 열이 나는 모든 사람을 확인하기로하고 있나요? –

2

은 목록 상자를 들어 다음 코드를 사용했습니다. 그러나 이것은 한 :

내 자신의 GridView에서
var item = ItemsControl.ContainerFromElement(sender as ItemsControl, (DependencyObject)e.OriginalSource) as ListBoxItem; 
if (item != null) 
{ 
    // Handle it 
} 
5

다른 답변의 어느 때문에 ListBoxItem 복잡한 스타일의 내 경우에는 일 :

+0

이것은 작동합니다. 감사. – SteveP

+0

이것은 나를 위해 너무 작동합니다. 목록 상자의 다른 컨트롤로 인해 다른 대답은 작동하지 않습니다. 감사 – superstar