:
if(!IsSetUp)
{
MySetUpFunction();
IsSetUp = true;
}
बाहर चेक WPF विंडोज जीवन भर की घटनाओं यहाँ - आप अपना सामान केवल एक बार आग सुनिश्चित करने के लिए भरी हुई विधि में एक बूलियन उपयोग कर सकते हैं एक बुलियन ध्वज संग्रहित करते हुए, आप एक विस्तार विधि का उपयोग कर सकते हैं और फर्जी Loaded
पर केवल एक बार फायरिंग के लिए रैपिंग का प्रतिनिधि बना सकते हैं।
public static void OnLoadedOnce(
this UserControl control,
RoutedEventHandler onLoaded)
{
if (control == null || onLoaded == null)
{
throw new ArgumentNullException();
}
RoutedEventHandler wrappedOnLoaded = null;
wrappedOnLoaded = delegate(object sender, RoutedEventArgs e)
{
control.Loaded -= wrappedOnLoaded;
onLoaded(sender, e);
};
control.Loaded += wrappedOnLoaded;
}
...
class MyControl : UserControl
{
public MyControl()
{
InitializeComponent();
this.OnLoadedOnce(this.OnControlLoaded /* or delegate {...} */);
}
private void OnControlLoaded(object sender, RoutedEventArgs e)
{
}
}
वैसे यह बेवकूफ है, मुझे इस तरह के गार्ड क्लॉज का उपयोग नहीं करना चाहिए। लेकिन यह सही जवाब है इसलिए आपका मुद्दा यहां है। –
सहमत - आप खिड़की से विरासत में अपना खुद का खिड़की वर्ग बना सकते हैं और यदि आप अक्सर ऐसा करते हैं तो अपनी पूरी परियोजना में एक ईवेंट लागू कर सकते हैं। – brendan
कृपया यह भी देखें: http://blogs.msdn.com/b/mikehillberg/archive/2006/09/19/loadedvsinitialized.aspx –