2010-05-13 144 views
35

我試圖在WPF應用程序中創建一個窗體,它將允許用戶使用類似iPhone的手勢來滾動可用的字段。所以,我將所有的表單控件放在ScrollViewer中的一個StackPanel中,當屏幕上顯示的元素過多時,滾動條就會如預期般顯示。但是,當我嘗試在支持觸摸的設備上測試此功能時,平移手勢(將手指放在表面上並將其向上拖動)不會像我所期望的那樣移動可視區域。有沒有辦法在WPF ScrollViewer中觸摸啓用滾動?

當我簡單的把一個數一個ListView中的元素,觸摸手勢的工作只是罰款。有沒有什麼方法可以在ScrollViewer中啓用同樣的行爲?

我的窗的結構是這樣的:

<Window x:Class="TestTouchScrolling.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" Loaded="Window_Loaded"> 
<Grid>   
    <ScrollViewer Name="viewer" VerticalScrollBarVisibility="Auto"> 
     <StackPanel Name="panel"> 
      <StackPanel Orientation="Horizontal"> 
       <Label>Label 1:</Label> 
       <TextBox Name="TextBox1"></TextBox> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal"> 
       <Label>Label 2:</Label> 
       <TextBox Name="TextBox2"></TextBox> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal"> 
       <Label>Label 3:</Label> 
       <TextBox Name="TextBox3"></TextBox> 
      </StackPanel> 

      <!-- Lots more like these --> 

     </StackPanel> 
    </ScrollViewer> 
</Grid> 

回答

10

如果您使用的是.NET 4.0,還有最近被微軟團隊發佈了一個很酷的事情!他們將所有這些漂亮的Surface控件移植到Win7。 SurfaceScrollViewer非常酷,就像iphone一樣。安裝此工具包,並開始從VS2010項目模板的SurfaceWin7Touch項目 http://www.microsoft.com/en-us/download/details.aspx?id=26716

+1

你好Jobi,上面的鏈接不工作,請你發佈一個工作鏈接。謝謝!!! – Prabhakaran 2013-05-28 01:52:35

+1

更正了鏈接 – 2014-03-21 06:06:25

57

您應該使用附加屬性:

  • ScrollViewer.PanningMode
  • ScrollViewer.PanningDeceleration
  • ScrollViewer.PanningRatio

在ScrollViewer默認樣式中,PanningMode默認爲None,但是將其設置爲到另一個值將使觸摸滾動。我目前正在調查在我的應用中使用這個功能,並且正在尋找一個很好的減速度和比率值......我可能只需要測試它們就可以找到效果很好的東西。

+3

請注意,這些屬性在'Miscellaneous'選項卡下,並且它們在Silverlight **中不可用,以防萬一您想知道。 – 2015-02-11 09:32:47

相關問題