2013-05-31 29 views
5

Liste kutusunda bir scrollviewer kullanırken, tüm pencerem liste kutusunun sonuna ulaştığımda aracılığıyla sıçrayan oluyor kaydırma kaydırma. Fare tekerleğimi kullanırken numaralı davranış görünmüyor. Bu aşırı gezinme/kauçuk bant etkisi/ek geri efekt/zıplatma efektini nasıl devre dışı bırakabilirim.xaml Scrollviewer - Tüm pencereyi aşırı harcama/kauçuk bant etkisi/snapback etkisi/sıçrayan devre dışı bırakma

Windows 8 Bilgisayarında .NET Framework 4.5 ile çalışıyorum.

public class FixedListBox : ListBox 
{ 
    protected override void OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs e) 
    { 
     e.Handled = true; 
    } 
} 

: Sen OnManipulationBoundaryFeedback yöntemini geçersiz kılarak bu davranışı kaldırabilir

<Window x:Class="style_test_for_scrollviewer.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 

    <Grid> 
     <ListBox Width="200"> 
      <WrapPanel Width="200"  ScrollViewer.PanningMode="VerticalOnly"   ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Visible"> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
       <Button Height="200" Width="200"></Button> 
     </WrapPanel> 
     </ListBox> 
    </Grid> 
</Window> 

cevap

4

: http://www.vidup.de/v/gQ2pI/ İşte

benim kod örneği:

Bu videodaki sıçrama etkisini görebilirsiniz Başka bir çözüm, aşağıdaki işleyiciyi ManipulationBoundaryFeedback olayına eklemek (doğrudan Liste Kutusu'nda veya bir stil aracılığıyla):

<ListBox ManipulationBoundaryFeedback="OnManipulationBoundaryFeedback"/> 

Veya:

<Style TargetType="{x:Type ListBox}"> 
    <EventSetter Event="ManipulationBoundaryFeedback" Handler="OnManipulationBoundaryFeedback"/> 
</Style> 

arkasında aşağıdaki kod ile:

protected void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) 
{ 
    e.Handled = true; 
} 

Bu yöntemler çok ScrollViewer ile çalışır.