Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [WinRT] Drag and Drop между 2 Canvas элементов 
:(
    Опции темы
Riccon
Дата 8.2.2014, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 5.5.2004

Репутация: нет
Всего: нет



Добрый день.

Возникла задача иметь на одном экране несколько областей, на котолрых нужно свободным образом позиционировать некоторое количество объектов(Rectangle, например), а так же, передвигать эти объекты между областями.
В качестве таких областей выбрал Canvas. 

Если с DragAndDrop элементов внутри Canvas проблем нет, то как сдеать их перемещение между Canvas  я не представляю.
В принципе можно определить, что за Cancas находится под курсором, но, когда тянешь объект на другой Canvas, этот объект под него "заплывает".

Как быть, куда копать? 
Надеюсь, кто нибудь поможет с советом....



В качестве наброска:

Код

    <Grid Name="MainGrid" PointerMoved="Rectangle_PointerMoved" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

        <Canvas Name="Canv0" Background="Gray" Grid.Column="0">
            <Rectangle                
                Width="80" 
                Height="80" 
                Fill="Red" 
                Canvas.Left="98" 
                Canvas.Top="102" 
                ManipulationDelta="Rectangle_ManipulationDelta"
                ManipulationMode="TranslateX , TranslateY" 
                ManipulationCompleted="Rectangle_ManipulationCompleted"
                />
        </Canvas>
        <Canvas Name="Canv1" Background="LightGray"  Grid.Column="1"></Canvas>
        <Canvas Name="Canv3" Background="LightBlue"  Grid.Column="2"></Canvas>
    </Grid>


Код

        private void Rectangle_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
        {
            Rectangle myRectangle = (Rectangle)sender;

            Canvas.SetLeft(myRectangle Canvas.GetLeft(myBorder) + e.Delta.Translation.X);
            Canvas.SetTop(myRectangle, Canvas.GetTop(myBorder) + e.Delta.Translation.Y);
        }

        private void Rectangle_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
        {
            Rectangle myRectangle = (Rectangle)sender;
            var position = myRectangle.TransformToVisual(Window.Current.Content).TransformPoint(new Point());
            var elements = VisualTreeHelper.FindElementsInHostCoordinates(position, MainGrid);
            foreach (UIElement element in elements)
            {
                if (element is Canvas)
                {
                    // code
                }
            }
        }


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0516 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.