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