2017-11-09 4 views
0

NotifyIcon projectを使用して、C#アプリでバルーンを表示します。ビューモデルからコードビハインドにアクセスするWPF

プログラムからのトリガが発生したときにポップアップ/バルーンとして表示されるようにします。問題は、ViewModelにコンテキストを持たない.xaml.csファイルのコードビハインドで、.ShowCustomBalloonメソッドを使用してバルーンを表示する方法しか見ることができないことです。プロジェクトの例は、バルーンの内容を示すためにコードビハインドを使用しているために機能します。

私が必要とするのは、viewModelのプロパティにバインドされた、この表示バルーンをトリガーできるイベントリスナーを.xamlファイルに持たせる方法です。問題は、C#アプリ開発者の私の経験です。偉大ではないと私はこれについて行く方法が不思議です。

答えて

1

コードビハインド(ビュー)では、プロパティ変更イベント(またはその他のイベント、実際はViewModel実装に依存します)を購読する必要があります。ここで

は、サンプルのViewModelである:ここでは

public class SomeViewModel : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    private string someProperty; 
    public string SomeProperty 
    { 
     get { return someProperty; } 
     set 
     { 
     someProperty = value; 
     OnPropertyChanged(); 
     } 
    } 

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 
    { 
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 
    } 
} 

はサンプル図である。また、いくつかのMVVMライブラリやフレームワークの使用を検討し

public partial class SomeView : Window 
{ 
    public DiscImageView() 
    { 
     // ... 

     viewModel.PropertyChanged += ViewModel_PropertyChanged; 
    } 

    private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) 
    { 
     if (e.PropertyName == nameof(SomeViewModel.SomeProperty)) 
     { 
      // Logic for changed property event 
     } 
    } 
} 

、彼らは人生に多くを簡素化します。私はMVVMLightを提案し、他にはmessaging capabilitiesを持っています。

関連する問題