गोमेद (http://www.codeplex.com/wpfonyx) काफी हद तक प्रदान करेगा इसके लिए अच्छा समाधान। उदाहरण के लिए, ICommonDialogProvider सेवा है, जो इस तरह एक ViewModel से इस्तेमाल किया जा सकता को देखो:
ICommonFileDialogProvider provider = this.View.GetService<ICommonDialogProvider>();
IOpenFileDialog openDialog = provider.CreateOpenFileDialog();
// configure the IOpenFileDialog here... removed for brevity
openDialog.ShowDialog();
यह बहुत ठोस OpenFileDialog का उपयोग करने के समान है, लेकिन पूरी तरह से परीक्षण योग्य है। आपको वास्तव में आवश्यक डिकूप्लिंग की मात्रा आपके लिए एक कार्यान्वयन विवरण होगी। उदाहरण के लिए, आपके मामले में आप ऐसी सेवा चाहते हैं जो पूरी तरह से इस तथ्य को छुपाए कि आप एक संवाद का उपयोग कर रहे हैं। की तर्ज पर कुछ:
public interface IRemoveFiles
{
string[] GetFilesToRemove();
}
IRemoveFiles removeFiles = this.View.GetService<IRemoveFiles>();
string[] files = removeFiles.GetFilesToRemove();
फिर आप देखें IRemoveFiles सेवा, जिसके लिए वहाँ कई आप के लिए उपलब्ध विकल्पों है के लिए एक कार्यान्वयन है सुनिश्चित करने के लिए है।
गोमेद अभी तक रिलीज के लिए तैयार नहीं है, लेकिन कोड पूरी तरह से काम कर रहा है और संदर्भ बिंदु के रूप में कम से कम उपयोग करने योग्य है। मैं आशा करता हूं कि वी 1 इंटरफेस को जल्द ही स्थिर कर दें, और जैसे ही हमारे पास सभ्य दस्तावेज और नमूने होंगे, उतनी ही रिलीज होगी।
मैंने [इस पोस्ट] में एक बहुत ही समान प्रश्न का उत्तर दिया है (http://stackoverflow.com/a/15512972/385995)। –