मेरे WPF परियोजना इस तरह का आयोजन किया जाएगा बिना स्क्रीन दसगुणा: Screens.Group1.Screen1
में ScreenManager.Show("Group1.Screen1")
यह दिखता है (प्रतिबिंब का उपयोग कर):जादू तार
Screens
Group1
Screen1
View.xaml
ViewModel.cs
Group2
Screen2
View.xaml
ViewModel.cs
Screen2
मैं कुछ इस तरह से इस्तेमाल करेंगे Screen1
दिखाने के लिए एक दृश्य और एक ViewModel के लिए नामस्थान और उन्हें तत्काल।
मैं Screen1
और Screen2
युग्मन (मैं नहीं चाहता कि Screen1
नाम स्थान का उपयोग करने के Screen2
में कक्षाएं चाहते हैं) के बिना जादू स्ट्रिंग कैसे समाप्त कर सकते हैं। इसके अलावा मुझे कुछ प्रकार की स्क्रीन डिस्कवरी (स्वत: पूर्णता/इंटेलिजेंस)
या शायद कुछ तरीका (स्वचालित परीक्षण) सत्यापित करने के लिए कि ScreenManager.Show
पर सभी कॉल मान्य हैं।
अद्यतन: मैं इस के साथ आया था:
public class ScreenNames
{
public Group1Screens Group1;
public class Group1Screens
{
public ScreenName Screen1;
}
}
public sealed class ScreenName
{
private ScreenName() { }
}
public class ScreenManager : IScreenManager
{
public void Show(Expression<Func<ScreenNames, ScreenName>> x) {}
}
उपयोग:
screenManager.Show(x=>x.Group1.Screen1);
आदर्श नहीं है, लेकिन मैं का उल्लंघन मान लें कि सूखी अभी भी जादू तार से बेहतर है। और मैं स्वचालित रूप से (प्रतिबिंब के साथ) परीक्षण कर सकता हूं कि सभी कॉल मान्य हैं।
स्क्रीन 2 को स्क्रीन 1 के बारे में जानने की आवश्यकता क्यों है? स्क्रीन स्क्रीन प्रत्येक स्क्रीन के बाहर मौजूद नहीं है? और इंटेलिसेंस द्वारा, आप कह रहे हैं कि विकास के दौरान आप स्क्रीनमैनेजर टाइप करना शुरू करते समय ड्रॉपलिस्ट में प्रत्येक स्क्रीन के नाम दिखाना चाहते हैं। दिखाएं()? स्क्रीन स्थिर या गतिशील (रनटाइम पर लोड) की सूची है? – Dave
आखिरकार मैं एक पैरामीटर पाउंगा; ScreenManager ViewModel की एक संपत्ति होगी; इंटेलिजेंस के लिए मुझे लगता है कि एक स्थैतिक सूची जरूरी है:/ मुझे लगता है कि मेरे पास ऐसा कुछ हो सकता है: ScreenManager.Show (x => x.Group1।स्क्रीन 1) –
स्क्रीनमैनेजर जैसे उपयोग। शो (x => x.Group1.Screen1) का मतलब होगा कि मुझे स्क्रीन की एक अलग सूची रखना और बनाए रखना होगा, लेकिन मुझे लगता है कि अगर कोई इंटेलिजेंस –