2013-01-07 14 views
8

Mvvm ve mvvm ışığından oldukça yeniyim, ama bunun genel fikrini anlıyorum. Anlayamadığım şey yeni bir pencere açmak istiyorsam, ancak bu pencerenin arayandan yeni verilere ulaşması için en iyi uygulamanın hangisi olduğu bilgisine ihtiyacı var mı? Verileri yapıcıya iletirsem, bu, kodun görüntü modeline iletmek için arkadaki kodda ihtiyacım olduğu anlamına gelir. Mesajlaşmayı kullanamıyorum çünkü temel veri değil. Şimdiden teşekkürler.En İyi Parametreler MVVM Lightside Parametrelerle Yeni Pencere Açmak

+0

temel olmadığı için, ben mesajlaşmayı kullanamaz "demek size antik geçmişte ama ya bu diriltmeye Maalesef veri." ? Bunu soruyorum çünkü MVVM öğreniyorum ve eğer durumdaydım, Messaging'i kullanırdım. – lightxx

+0

Üzgünüm, hatırlamam için çok uzun zaman oldu –

cevap

6

Popüler bir seçim, görünüm/viewmodel oluşturacak ve yeni görünümü gösterecek bir hizmet sınıfı kullanmaktır. Görünüm model yapıcınız ve/veya yöntem/özellik, arayanın verilerini alabilir ve daha sonra görüntü, ekranda görüntülenmeden önce görünüm modeline bağlanır. Burada

bir DialogService çok çok basit bir uygulamasıdır:

public class DialogService : IDisposable 
{ 
    #region Member Variables 
    private static volatile DialogService instance; 
    private static object syncroot = new object(); 
    #endregion 

    #region Ctr 
    private DialogService() 
    { 

    } 
    #endregion 

    #region Public Methods 
    public void ShowDialog(object _callerContentOne, object _callerContentTwo) 
    { 
     MyDialogViewModel viewmodel = new MyDialogViewModel(_callerContentOne, _callerContentTwo); 
     MyDialogView view = new MyDialogView(); 
     view.DataContext = viewmodel; 

     view.ShowDialog(); 
    } 
    #endregion 

    #region Private Methods 

    #endregion 

    #region Properties 
    public DialogService Instance 
    { 
     get 
     { 
      if (instance == null) 
      { 
       lock (syncroot) 
       { 
        if (instance == null) 
        { 
         instance = new DialogService(); 
        } 
       } 
      } 
      return instance; 
     } 
    } 
    #endregion 
} 
+0

Bana basit bir örnek gösterir misiniz? Seni tamamen takip ettiğimden emin değilim. Sadece silverlight için çalışan geedubb –

+0

http://blog.roboblob.com/2010/01/19/modal-dialogs-with-mvvm-and-silverlight-4/ – geedubb

+0

. Visual studio 2010'da bir wpf uygulaması yapıyorum. –

İlgili konular