2016-04-18 12 views
0

私はWPFとMVVM(PRISM)に新しくなりました(正直言って私はJavaから来ています)、私は自分のDBとやりとりするWebサービスを作成して、私のViewModelクラス。 INotifyPropertyChanged、OnPropertyChanged ..を実装して、観測可能なコレクションを使用して、ネットで見つけたすべてのものを試しましたが、今は(一時的に)私はViewModelでWS呼び出しを毎秒行うTimerDispacherを作成しました...しかし、これはそれを行うための最善の方法ではありませんイム確認してください(それは最悪ではない場合)WPFでUI要素を更新するMVVM

今私はここDB

内のすべての変更に対応するためのUIは、ロジックのサンプルコードで欲しいです私のViewModelクラスとplzではどこが間違っていたのか教えてください...私のコードでWPFの機能を最大限に活用し、タイマーのような愚かなソリューションを使わなくてもいいようにして欲しいです...

public class MyViewModel : ViewModelBase 
{ 

private ObservableCollection<SomeClass> _listeData; 
public ObservableCollection<SomeClass> ListeData{ 
      set 
      { 
       _listeData= value; 
       OnPropertyChanged("ListeData"); 
      } 
      get { return _listeData; } 
     } 

private string _textData; 
public string TextData 
     { 
      get { return _textData; } 
      set 
      { 
       _textData = value; 
       OnPropertyChanged("TextData"); 

      } 
     } 
//Ctor 
protected internal MyViewModel () 
{ 
InitData(); 
SetTimer(); 
} 

public void InitData() 
{ 
GetTextData(); 
GetListeData(); 
} 

protected void GetTextData(string param) 
{ 
using (var proxy = new WCFServiceClient()) 
      { 
       TextData = proxy.GetTextData(param); 
      } 

} 
protected void GetListeData(string param) 
{ 
using (var proxy = new WCFServiceClient()) 
      { 
       ListeData = new ObservableCollection<SomeClass> (proxy.GetListeData(param)); 
      } 

} 

protected void dispatcherTimer_Tick(object sender, EventArgs e) 
     { 
      InitData(); 
     } 

     private void SetTimer() 
     { 
      var dispatcherTimer = new DispatcherTimer(); 
      dispatcherTimer.Tick += dispatcherTimer_Tick; 
      dispatcherTimer.Interval = new TimeSpan(0, 0, 1); 
      dispatcherTimer.Start(); 
     } 

} 
+0

データの変更を引き起こす要因は何ですか?アプリケーションの外部からデータベースが自動的に変更されるのですか、またはアプリケーション内からのみデータが変更されますか? – LionAM

+0

データベースの変更は私のアプリケーション外から発生します。私はちょうどそこからデータを読んでそれを表示します。 –

答えて

0

アプリケーションに組み込まれたWCFインターフェイスは、クライアントとサーバー/ DB層を分離します。通常のWCFを通じて、DBに加えられた変更はクライアントによって(実際にはサーバー層によって)観察されません。クライアントに頼っている通知システムはこれを是正するものではありません。

herethis SO postにあなたの要件に取り組む方法の提案があります。

関連する問題