ScatterViewItems, содержащие интерактивные элементы поверхности - PullRequest
5 голосов
/ 15 июня 2009

Это давняя проблема интерактивных элементов внутри интерактивных элементов, но я хочу, чтобы ScatterViewItem содержал другие поверхностные интерактивные элементы, такие как SurfaceButton или SurfaceCheckBox. У меня есть все мои элементы, и они реагируют на нажатия и т. Д. Проблема в том, что я получаю нормальное поведение ScatterView только после того, как щелкаю область, не содержащую элемент управления.

Существует ли элегантное решение для перетаскивания, даже если контакт находится на SurfaceButton или SurfaceCheckbox?

, например

<s:ScatterView >    
    <Grid Width="200" Height="200">
        <s:SurfaceButton />
    </Grid>
</s:ScatterView>

Ответы [ 3 ]

1 голос
/ 16 июня 2009

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

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

0 голосов
/ 23 декабря 2010

Чтобы решить эту проблему, важно различать события предварительного просмотра и не предварительного просмотра:

http://eightyeightpercentnerd.blogspot.com/2008/06/wpf-preview-vs-non-preview-events.html

Таким образом, вы можете решить, какое событие вы хотите прослушать.

Тем не менее, в качестве общего совета всегда полезно установить для параметра Handled Flag события значение true, если его не следует направлять дальше.

0 голосов
/ 23 декабря 2010

вы можете «взломать» это поведение, прослушивая события ContactLeave на одном из дочерних элементов управления и в этом вызывая contact.Capture (scatterviewitem). это скажет svi взять на себя прослушивание и ответ на контакт. однако, приведет к поведению, несовместимому с другими частями Поверхности, и может привести к путанице. это также несовместимо даже с самим собой ... это позволяет переключаться с внутреннего управления на SVI, не поднимая палец, но пользователю все еще приходится поднимать палец, чтобы переключиться обратно на внутренний контроль.

...