0

Silverlight で次のようなインターフェイスを作成したいと考えています。 http://demos6.dundas.com/Silverlight/

Silverlight を使用してさまざまな要素を再配置できるダッシュボードを作成する必要があります。ダッシュボード要素は、チャート、ゲージ、グリッドを含むさまざまなユーザー コントロールにすることができます。ユーザーは、ダッシュボード要素を動的に追加および削除できる必要があります。また、ユーザーはドラッグ アンド ドロップを使用してダッシュボード要素を再配置できる必要があります。

Silverlight の開発を始めたばかりなので、手がかりとなるコード サンプルがあれば、それは素晴らしいことです。

ありがとう、プラティック

4

2 に答える 2

1

Visifireも試すことができます。Visifire のチャートとゲージを使用して、ドラッグ アンド ドロップ動作を実装できます。次のコードは、アプリケーションでドラッグ アンド ドロップ動作を構築するのに役立ちます。この動作を、Silverlight または WPF アプリケーションのVisifireチャートまたはゲージにアタッチできます。

以下の私の SkyDrive からソース コード ( DragElementsInCanvasBehaviour.zip ) をダウンロードできます。

https://skydrive.live.com/?cid=61995e3895be1728&sc=documents&uc=1&id=61995E3895BE1728!106#

["Hello world" ドラッグ アンド ドロップ動作クラス。

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Interactivity;

namespace DragInCanvasBehaviour
{
    public class DragInCanvasBehaviour : Behavior<UIElement>
    {
        protected override void OnAttached()
        {
            base.OnAttached();
            this.AssociatedObject.MouseLeftButtonDown += AssociatedObject_MouseLeftButtonDown;
            this.AssociatedObject.MouseMove += AssociatedObject_MouseMove;
            this.AssociatedObject.MouseLeftButtonUp += AssociatedObject_MouseLeftButtonUp;
        }

        protected override void OnDetaching()
        {
            base.OnDetaching();
            this.AssociatedObject.MouseLeftButtonDown -= AssociatedObject_MouseLeftButtonDown;
            this.AssociatedObject.MouseMove -= AssociatedObject_MouseMove;
            this.AssociatedObject.MouseLeftButtonUp -= AssociatedObject_MouseLeftButtonUp;
        }

        private Canvas canvas;
        private bool IsDragging = false;
        private Point mouseOffset;

        private void AssociatedObject_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            if (canvas == null)
                canvas = (Canvas)VisualTreeHelper.GetParent(this.AssociatedObject);
            IsDragging = true;
            mouseOffset = e.GetPosition(AssociatedObject);
            AssociatedObject.CaptureMouse();
        }

        private void AssociatedObject_MouseMove(object sender, MouseEventArgs e)
        {

            if (IsDragging)
            {
                FrameworkElement element = AssociatedObject as FrameworkElement;
                FrameworkElement parent = element.Parent as FrameworkElement;

                Point point = e.GetPosition(parent);
                AssociatedObject.SetValue(Canvas.TopProperty, point.Y - element.Height /2);
                AssociatedObject.SetValue(Canvas.LeftProperty, point.X - element.Width / 2);
            }
        }

        private void AssociatedObject_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            if (IsDragging)
            {
                AssociatedObject.ReleaseMouseCapture();
                IsDragging = false;
            }
        }

    }
}

お役に立てれば!

于 2011-09-08T07:24:32.713 に答える
0

Blacklight Controls Library「Drag Dock Panel」をご覧ください。ダッシュボードを構築するのに最適です。ここでそれを使用する方法に関するチュートリアルさえあります...

于 2010-03-13T17:17:48.037 に答える