2010-01-04 22 views
5

Canvas ürününe çeşitli şekillerde (Ellipse ve Rectangle gibi) koydum. Şimdi, kullanıcının bu şekillerde &'u sürükleyebilmesini istiyorum. Kullanabileceğim önceden tanımlanmış bazı işlevler var mı, yoksa & sürüklemesini fare olaylarını kullanarak kendim bırakmalı mıyım?Tuval Üzerine Sürükle ve Bırak Şekiller

Teşekkürler!

cevap

-1

Farenizi ve görsel ağacı kullanarak bunu kendiniz yapmanız gerektiğini düşünüyorum. İşte sana yardım edeceğine inandığım bir yazı - link text. Eğer değilse bu akşam daha sonra gönderebileceğim bazı örnek kodlarım var.

HTH

5

fare olayları işleme ve sürükle uygulanması ve bırak kendin olacak kesinlikle işe, ama sen Expression Blend davranışları kaldıraç mümkün olabilir yapmaya çalıştıkları şeye bağlı. Microsoft.Expression.Interactions DLL, Silverlight ve WPF'de kullanılmak üzere bazı yararlı temel davranışları, tetikleyicileri ve eylemleri içerir.

Bir öğe için temel bir sürükle ve bırak işlevselliğini uygulayan bir FareDeğEtkinliği Davranışı vardır; bu, düzen kabınızdan bağımsız olarak çalışmalıdır (böylece bir Tuval ile kısıtlanmayacaksınız). eğer isterseniz doğrudan XAML Blend kullanarak bir elemanın üzerine bu davranışı bırakın, ya da tanımlayabilirsiniz:

<Rectangle Fill="Red" Stroke="Black" HorizontalAlignment="Left" Width="100" Height="100"> 
    <i:Interaction.Behaviors> 
     <il:MouseDragElementBehavior/> 
    </i:Interaction.Behaviors> 
</Rectangle> 

Projeniz System.Windows.Interactivity.dll ve Microsoft.Expression.Interactions hem başvurmak zorunda kalacaktır. Bu davranışı kullanmak için dll.

DÜZENLEME (C# kod arkasında bu davranışı takılarak göstermek için):

Rectangle rect = new Rectangle(); 
rect.Fill = new SolidColorBrush(Colors.Red); 
rect.Width = 100; 
rect.Height = 100; 

MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior(); 
dragBehavior.Attach(rect); 

sizin kullanarak ifadelere Microsoft.Expression.Interactivity.Layout ad eklemeyi unutmayın.

+0

Merhaba, Gerçekten Expression Blend'e aşina değilim, ama ilginç görünüyor. Kullanıcıların geometrik problemler (Circles, Triangles, Bisectors vb.) Çizmelerini sağlayan bir tür program yapıyorum. Şekiller, kullanıcı tarafından dinamik olarak oluşturulduğundan, XDL yerine, C# yerine MouseDragElementBehavior ayarlamam gerektiğini düşünüyorum, değil mi? Bunu yapmak için bir C# örnek kodu verebilir misiniz? System.Windows.Interactivity.dll ve Microsoft.Expression.Interactions.dll dosyasına nasıl başvurmalıyım? Teşekkürler! –

+0

Eğer Expression Blend 3 yüklü değilse, DLL'lere başvurabilmek için SDK'yı (ücretsiz) indirip kurmanız gerekecek. Buradan indirebilirsiniz: http://www.microsoft.com/downloads/details.aspx?FamilyID=F1AE9A30-4928-411D-970B-E682AB179E17&displaylang=en Davranışlarla ilgili güzel şeylerden biri bazılarını kapsüllemek UI davranış kodunu ve daha sonra XAML'de deklaratif bir öğeye ekleyin. Ancak, bir kodun arkasına da bir davranış oluşturmak ve eklemek mümkündür, bu yüzden yukarıdaki C# örneğini dahil etmek için yukarıdakileri düzenleyeceğim. –

+0

Kulağa ilginç geliyor ... "Microsoft Expression Blend 3 SDK'yı" indirdim ancak yüklemeye başladığımda şu mesajı aldım: ".Net 3.5 sürümü veya daha yeni çalışma zamanı bileşenleri, Microsoft Expression Blend 3 SDK'sını yüklemeden önce yüklenmelidir. Lütfen sorunu düzelttikten sonra tekrar yüklemeyi deneyin. " Ancak, bilgisayarımda "Microsoft .Net Framework 3.5" yüklü olduğunu görüyorum. Bu yeterli değil mi? –