SurfaceListBox внутри ScatterView

У меня есть SurfaceListBox внутри ScatterViewItem. Все в порядке, но дело в том, что я хотел бы переместить ScatterviewItem, если я не выберу какой-либо элемент SurfaceListBox.

У меня есть следующий код:

<Grid Background="{StaticResource WindowBackground}" >
<s:ScatterView>
<s:ScatterViewItem >
<Viewbox>
<Grid>
<Grid.RowDefinitions >
<RowDefinition/>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions >
<Label Content="Test" Grid.Row ="0"/>
<s:SurfaceListBox Grid.Row="1" Height="200" >
<s:SurfaceListBoxItem Content ="Test"/>
<s:SurfaceListBoxItem Content ="Test2"/>
<s:SurfaceListBoxItem Content ="Test3"/>
<s:SurfaceListBoxItem Content ="Test4"/>
</s:SurfaceListBox >
<Label Content="Test5" Grid.Row ="2"/>
</Grid>
</Viewbox >
</s:ScatterViewItem >
</s:ScatterView >
</Grid>

Если я коснусь какой-либо из меток, Scatterview ответит, и я смогу его переместить, но если я нажму на SurfaceListBox, ScatterView не взаимодействует с моим пальцем (даже у него есть элемент или нет).

Что я должен делать? Я проверил события scatterview и не знаю, какой из них использовать, чтобы включить это.

Заранее спасибо,

Пау


person paubus    schedule 27.04.2011    source источник


Ответы (2)


Сделайте шаг назад и подумайте о том, чего вы на самом деле хотите добиться... напишите серию утверждений вроде «когда пользователь кладет палец на X и движется в направлении Y, должно произойти Z».

Часто это показывает, что в том, что вы пытаетесь сделать, есть некоторые противоречия.

Если вы хотите, чтобы пользователь мог положить палец на элемент списка и преобразовать это движение в выбор элемента, прокрутку списка, перемещение контейнера или начало перетаскивания элемента... невозможно сделать все это из неоднозначного ввода, который вы получаете от пользователя. Поэтому будьте очень осторожны, чтобы добавление некоторых функций не нарушало работу других функций и не приводило к существенному отличию вашего приложения от других приложений Surface.

Тем не менее, технический ответ на ваш вопрос довольно прост... послушайте PreviewContactChanged на ScatterViewItem. После того, как вы определили, что контакт перемещается в правильном направлении на разумное пороговое расстояние, вызовите contact.Capture(scatterViewItem) — это переместит «владение» контактом из списка в scatterviewitem, который затем будет использовать ввод контакта. передвигаться.

person Robert Levy    schedule 27.04.2011

Спасибо Роберт!

Я проверяю PreviewContactChanged ScatterViewItem, но не знаю, что с ним делать. Кто-то дал мне такой пример: http://blog.endquote.com/post/802771198/surfacescrollviewer-behaviors и я попробую.

Еще раз спасибо за ответ! Пау

person Pau    schedule 28.04.2011