2011-11-15 47 views
2

我有下面的代碼段,這是一個WPF 4用戶控件的一部分:SurfaceScrollViewer:上嵌套子獲得觸摸

<Popup x:Name="CantoPopup" IsOpen="False" PlacementRectangle="50,-100,500,120" 
       AllowsTransparency="True" PopupAnimation="Fade" 
       StaysOpen="True" Width="500" Height="120"> 
      <Border BorderBrush="#FF120403" BorderThickness="1" CornerRadius="10" Background="#FF9350"> 
       <s:SurfaceScrollViewer x:Name="IndexScroller" Width="500" Height="120" Margin="10" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Visible"> 
        <DockPanel x:Name="InnerIndexPanel" /> 
       </s:SurfaceScrollViewer> 
      </Border> 
     </Popup> 

的DockPanel中然後在代碼隱藏填充的TextBlocks的集合。基本上,我正在嘗試構建一個可滾動的可觸摸項目的水平列表。

現在,我想檢測用戶觸摸了哪個文本塊。但是,既無法將TouchDown事件處理程序添加到TextBlocks,也無法使用TouchExtensions處理輕敲手勢。有人可以請指點我正確的方向嗎?

回答

0

我發現問題的關鍵是Popup組件有一些特殊性:)在這種情況下,它似乎沒有檢測到TouchDown事件和PreviewTouchDown事件。因此,我決定創建一個由Canvas構成的UserControl,該Canvas包含上面的代碼,然後每當我需要打開彈出窗口時,就可以在其他頂部顯示該控件。我不知道這是否是最好的解決方案,但現在它按預期做出反應。