WP7 Silverlight - коснитесь изображения в виде прокрутки стековой панели, чтобы показать это изображение в другой сетке - PullRequest
1 голос
/ 17 мая 2011

Я, наверное, самый худший «кодер», пытающийся создать приложение для Windows Phone 7, но мне крайне нужна помощь, и некоторые из вас могут даже подумать, что это смешно легко (что, вероятно, так и есть).

Моя проблема: как же я кодирую нажатие на картинку из одной сетки, чтобы отобразить ее как увеличенное изображение в другой сетке?

И я уточню:

У меня есть страница приложения (только в ландшафтном режиме) с двумя сетками, разделяющими экран.

Первая сетка (smallgrid) содержит Scrollviewer (small) со Stackpanel (smallimages) изображений, уменьшенных до 1/10 их размера внутри, по существу показывая миниатюры изображений.

Вторая сетка (contentgrid) предназначена для того, чтобы при нажатии на миниатюру из smallgrid это изображение отображалось в contentgrid

По умолчанию, шар0 отображается в 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, но я не знаю, как это сделать.

Или я могу использовать средство жестов, которое при нажатии на изображение заменяет изображение в contentgrid ... но я также не знаю, как это сделать.

Любое понимание полезно. Спасибо за любую помощь, так как я не программист на C #, не говоря уже о том, чтобы слишком хорошо знать язык или WP7 silverlight.

Ответы [ 2 ]

4 голосов
/ 18 мая 2011

Обязательно добавьте ссылку на сборку Silverlight Toolkit в элемент phoneapplicationpage (и как ссылку на проект):

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

Вы можете использовать GestureListener из набора инструментов Silverlight в вашем 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 голосов
/ 19 мая 2011

Если вы загляните в исходный код инструментария, то создается впечатление, что событие GestureListener.Tap генерируется всякий раз, когда XNA TouchPanel обнаруживает жест Tap.Интуитивно понятно, что это происходит всякий раз, когда генерируется событие MouseLeftButtonUp.Хорошо, не всегда, но в описанном типе взаимодействия это в основном «всегда».

Следовательно, я чувствую оба этих уровня (классы XNA и Toolkit) как ненужные накладные расходы - по крайней мере, для чего-то столь же простого, как нажатиесобытие.(Другие негативные последствия: размер приложения увеличивается по мере включения инструментария, медленный запуск по мере загрузки большего количества сборок.)

Сказав это, я начну с простого прослушивания события MouseLeftButtonUp, как, например,

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

Я также включил события ImageOpened / Failed.Вы можете по желанию использовать их для тонкой настройки вашего приложения.Они могут решить такие проблемы, как слишком частые события касания или сбои загрузки изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...