2017-12-24 17 views
1

私はページのViewModelを作成するこのコードを持っています。しかし、ViewModelでは、correctButtonPressedプロパティにアクセスしたいが、利用できない。ViewModelでページのプロパティにアクセスするにはどうすればよいですか?

どうすればこの情報にアクセスできますか?

public partial class PhrasesFrame : Frame 
{ 
    public int correctButtonPressed; 
    public PhrasesFrameViewModel vm = new PhrasesFrameViewModel(); 
    public PhrasesFrame() { 
     InitializeComponent(); 
    } 

    private string abc() 
    { 
     var a = correctButtonPressed; 
    } 


} 

public class PhrasesFrameViewModel : ObservableProperty 
{ 
    private ICommand bButtonClickedCommand; 
    public ICommand BButtonClickedCommand 
    { 
     get 
     { 
      return bButtonClickedCommand ?? 
       (bButtonClickedCommand = new Command(() => 
       { 
        // Next line gives an error "use expression body for accessors" "use expression body for properties. 
        correctButtonPressed = 123; 
       })); 
     } 
    } 

} 
+0

ビューモデルでプロパティとして公開し、ビューを設定します。 – Nkosi

+0

@ Nkosi - 例を挙げて何を意味するのか説明できますか?申し訳ありませんが、私はこれを行う方法を理解していません。 – Alan2

+0

詳細が必要です。現在の状態の質問は、不完全で不明確であり、何が尋ねられているのかを明確にするにはあまりにも多くの質問が必要になります。 [質問]を読んで問題を再現するのに使うことができる[mcve]を入力し、何が尋ねられているのかをよく理解できるようにします。 – Nkosi

答えて

2

ビューモデルでプロパティとして公開し、ビューにアクセスさせます。

public partial class PhrasesFrame : Frame { 

    public PhrasesFrameViewModel vm = new PhrasesFrameViewModel(); 
    public PhrasesFrame() { 
     InitializeComponent(); 
    } 

    private string abc() {   
     //View can access correctButtonPressed via the view model. 
     var a = vm.correctButtonPressed; 
    } 
} 

public class PhrasesFrameViewModel : ObservableProperty { 
    public int correctButtonPressed; 

    private ICommand bButtonClickedCommand; 
    public ICommand BButtonClickedCommand { 
     get { 
      return bButtonClickedCommand ?? 
       (bButtonClickedCommand = new Command(() => { 
        correctButtonPressed = 123; 
       })); 
     } 
    }  
} 
+0

これを行うと、PhrasesFrameのcorrectButtonPressedにどのようにアクセスできますか?私は質問に、私が意味することを示すための小さな1行の方法を追加しました。ありがとう – Alan2

+0

PhrasesFrameへのリファレンス(これ)をビューモデルに渡し、ViewModelにコンストラクタを追加し、そのリファレンスを使ってparentFrame.correctButtonPressed = 123のようなことをする必要があることを私に示唆しました。これも良い選択肢だと思いますか? – Alan2

+1

@ Alan2より優先されます。私は、Viewモデルがビューを認識していないか、ビューにあまりにも強く結合していない方が好きです。ビューはビューモデルによって公開されたメンバーにアクセスできますが、ビューモデルはビューモデルにアクセスするビューについては何も知りません。 – Nkosi

関連する問題