2009-08-17 12 views
5

Özel denetimimden diğer denetimimden birinin tıklatma olayını işleyen bir olayı nasıl oluşturabilirim? bir metin kutusu ve ben click olayını açığa istiyorumSilverlight Özel Denetim Özel Etkinlik Oluştur

bir düğme (Özel Kontrol) bir Silverlight uygulaması (özel denetim yukarıda kullanan): Burada

bende ne kurulumu olan ana uygulamadaki özel kontrol düğmesinden, bunu nasıl yaparım? Ben bağımlılık özelliklerini veya herhangi bir şey kullanmıyorum çünkü

Teşekkür

+0

Özel denetiminiz bir kullanıcı denetimi (UserControl'den türetilmiş) veya gerçek bir Denetim midir? Genel bir olayı dosyanın arkasındaki kodda gösterebilmeli ve etkinliği denetlemek için çocuk denetimlerinin etkinliklerine iliştirebilmelisiniz. –

+0

Bunlar 1'e birleştirilen 2 gerçek kontrol ve sadece butonun tıklama olayını göstermek istiyorum. Kullanıcı denetimi üzerinde çalışırken tıklama olayına ulaşabilirim, ancak kullanıcı denetimi kullanan bir şey üzerinde çalışıyorsam, o olay işleyicisine ulaşamayacağım. – PlayKid

cevap

8

Burada, süper basit bir versiyonu. Tıklama özelliğini gösterecektir. Bu, düğme şablonu bölümünün adının "Düğme" olduğunu varsayar.

using System.Windows; 
using System.Windows.Controls; 

namespace SilverlightClassLibrary1 
{ 
    [TemplatePart(Name = ButtonName , Type = typeof(Button))] 
    public class TemplatedControl1 : Control 
    { 
     private const string ButtonName = "Button"; 

     public TemplatedControl1() 
     { 
      DefaultStyleKey = typeof(TemplatedControl1); 
     } 

     private Button _button; 

     public event RoutedEventHandler Click; 

     public override void OnApplyTemplate() 
     { 
      base.OnApplyTemplate(); 

      // Detach during re-templating 
      if (_button != null) 
      { 
       _button.Click -= OnButtonTemplatePartClick; 
      } 

      _button = GetTemplateChild(ButtonName) as Button; 

      // Attach to the Click event 
      if (_button != null) 
      { 
       _button.Click += OnButtonTemplatePartClick; 
      } 
     } 

     private void OnButtonTemplatePartClick(object sender, RoutedEventArgs e) 
     { 
      RoutedEventHandler handler = Click; 
      if (handler != null) 
      { 
       // Consider: do you want to actually bubble up the original 
       // Button template part as the "sender", or do you want to send 
       // a reference to yourself (probably more appropriate for a 
       // control) 
       handler(this, e); 
      } 
     } 
    } 
}