2011-05-17 53 views
1

我可能是嘗試創建Windows Phone 7應用程序的絕對最差的「編碼器」,但我迫切需要幫助,你甚至可能認爲這很容易(這可能是)。WP7 Silverlight - 在stackpanel滾動視圖中點擊圖片以顯示另一個網格中的相同圖片

我的問題:我該如何編碼從一個網格的圖片點擊顯示爲另一個網格上的更大的圖像?

我會詳細說明:

我有一個應用程序頁面(僅在風景模式),與兩個網格分割屏幕。

第一格柵(smallgrid)含有的ScrollViewer(small)與圖像還原爲在其內它們的大小的1/10的一個StackPanel(smallimages),基本上示出了圖像的縮略圖。

第二格柵(contentgrid)設計,即一旦你從smallgrid縮略圖上點擊該圖像將在contentgrid

默認顯示的,balloon0顯示在contentgrid而當一個人敲擊將改變其中一個較小的圖像。

我會盡力爲此提供一些模擬代碼:

<grid x:name="smallgrid"> 
    <scrollviewer x:name="small"> 
    <stackpanel x:name="smallimages"> 
     <image="balloon0.jpg"><image> 
     <image="balloon1.jpg"><image> 
     <image="balloon2.jpg"><image> 
     <image="balloon3.jpg"><image> 
    </stackpanel> 
    </scrollviewer> 
</grid> 

<grid x:name="contentgrid"> 
    <image source="balloon0.jpg"><image> 
</grid> 

的背後代碼是我需要幫助。我想我要麼使用一個按鈕,一旦點擊,該圖像然後取代contentgrid中的圖像,但我不知道如何做到這一點。

或者我可以使用一個gesturelistener,當一個圖像被點擊時,它將取代contentgrid中的圖像......但我也不知道該怎麼做。

任何見解都有幫助。感謝您的幫助,因爲我不是C#編碼人員,更別提知道語言或WP7 silverlight太好了。

+0

我簡要地看到了你的「答案」,你在那裏闡述了你遇到的進一步問題。我去編輯你的問題放在那裏,同時有人刪除它。你可以隨時編輯你的原始問題,以增加更多細節/問題(顯然,非答案將被刪除)。至於你的問題,如果你可以更新你的問題,幷包括更多的細節(例如顯示你正在使用的實際XAML),我或其他人可能會進一步幫助你。 FUN FUN FUN! – theChrisKent 2011-05-18 13:09:27

+0

好的。當我回到家時,我將能夠上傳XAML並編輯我的問題並解決其他問題。 – topcoderwannabe 2011-05-18 19:28:51

回答

4

務必Silverlight工具包集引用添加到您的PhoneApplicationPage元素(作爲一個參考項目):

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 

您可以使用從Silverlight工具包的GestureListener在XAML像這樣的(也一定要name屬性添加到您的大圖):

<grid x:name="smallgrid"> 
    <scrollviewer x:name="small"> 
     <stackpanel x:name="smallimages"> 
     <image="balloon0.jpg"> 
      <toolkit:GestureService.GestureListener> 
      <toolkit:GestureListener Tap="smallImage_Tap" /> 
      </toolkit:GestureService.GestureListener> 
     <image> 
     <image="balloon1.jpg"> 
      <toolkit:GestureService.GestureListener> 
      <toolkit:GestureListener Tap="smallImage_Tap" /> 
      </toolkit:GestureService.GestureListener> 
     <image> 
     <image="balloon2.jpg"> 
      <toolkit:GestureService.GestureListener> 
      <toolkit:GestureListener Tap="smallImage_Tap" /> 
      </toolkit:GestureService.GestureListener> 
     <image> 
     <image="balloon3.jpg"> 
      <toolkit:GestureService.GestureListener> 
      <toolkit:GestureListener Tap="smallImage_Tap" /> 
      </toolkit:GestureService.GestureListener> 
     <image> 
     </stackpanel> 
    </scrollviewer> 
</grid> 

<grid x:name="contentgrid"> 
    <image x:Name="BigImage" source="balloon0.jpg"><image> 
</grid> 

然後在你的代碼隱藏,你能處理該事件是這樣的:

private void smallImage_Tap(object sender, GestureEventArgs e) 
{ 
    BigImage.Source = (sender as Image).Source; 
} 
0

如果您查看工具包源代碼,那麼無論何時XNA TouchPanel檢測到「點按」手勢,都會生成GestureListener.Tap事件。直覺上我會期望這種情況發生MouseLeftButtonUp事件生成。好吧,不總是,但是在描述的交互類型中,它基本上是「永遠」的。

因此我覺得這兩個級別(XNA和Toolkit類)都是不必要的開銷 - 至少對於tap事件這樣簡單的事情來說。 (其他負面影響:由於必須包含工具包,因此應用程序大小會增加,因爲需要加載更多的程序集,啓動速度會更慢。)

話雖如此,我會簡單地聽的MouseLeftButtonUp事件,例如

<Image Source="123.jpg" MouseLeftButtonUp="smallImage_Tap" ImageOpened="..." ImageFailed="..."/> 

我也包含這些ImageOpened /失敗的事件開始。您可以選擇使用它們來微調您的應用程序。他們可以解決諸如頻繁點擊事件或圖像加載失敗等問題。

+0

謝謝你,我也會玩。自從我幾天前發表最後一條評論以來,我甚至沒有機會打開該應用。 – topcoderwannabe 2011-05-20 18:38:54

相關問題