2012-06-26 16 views
7

की घटनाओं को संभालने के लिए मेरे पास कई बटनों के साथ उपयोगकर्ता नियंत्रण है, जिसका उपयोग कक्षा के आधार पर विभिन्न कार्यों को करने की आवश्यकता है।डब्ल्यूपीएफ उपयोगकर्ता नियंत्रण

समस्या यह है कि मुझे नहीं पता कि उन हैंडलरों को कैसे कार्यान्वित किया जाए क्योंकि अंतिम ऐप से मेरे उपयोगकर्ता नियंत्रण का उपयोग करते समय मुझे बटनों तक सीधे पहुंच नहीं है कि कौन से हैंडलर हैंडल हैंडल करता है।

आप यह कैसे करेंगे?

उत्तर

16

यह करने के लिए एक और तरीका है अपने UserControl में घटनाओं के माध्यम से घटनाओं का पर्दाफाश करने के लिए है:

public partial class UserControl1 : UserControl 
{ 
    public UserControl1() 
    { 
     InitializeComponent(); 
    } 


    public event RoutedEventHandler Button1Click; 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     if (Button1Click != null) Button1Click(sender, e);  
    } 
} 

यह आपके usercontrol एक Button1Click घटना है कि आपके नियंत्रण में है कि बटन अप करने के लिए हुक देता है।

+0

दोनों धन्यवाद, वे अच्छे समाधान की तरह लगते हैं। क्या कोई और विकल्प हैं? –

4

मैं प्रत्येक बटन के लिए एक कमांड और प्रत्येक "हैंडलर" के लिए प्रतिनिधि बनाउंगा। आप उपयोगकर्ता (अंतिम ऐप) को प्रतिनिधियों का पर्दाफाश कर सकते हैं और आंतरिक रूप से उन्हें आदेश पर Execute() विधि पर कॉल कर सकते हैं। इस तरह कुछ:

public class MyControl : UserControl { 
     public ICommand FirstButtonCommand { 
      get; 
      set; 
     } 
     public ICommand SecondButtonCommand { 
      get; 
      set; 
     } 
     public Action OnExecuteFirst { 
      get; 
      set; 
     } 
     public Action OnExecuteSecond { 
      get; 
      set; 
     } 

     public MyControl() { 
      FirstButtonCommand = new MyCommand(OnExecuteFirst); 
      FirstButtonCommand = new MyCommand(OnExecuteSecond); 
     } 
    } 

cource के "MyCommand" को आईसीओएमएंड को लागू करने की आवश्यकता है। आपको अपने आदेशों को अनुरूप बटन पर बाध्य करने की भी आवश्यकता है। उम्मीद है की यह मदद करेगा।

संबंधित मुद्दे