0

私は初めてWPFです。を使用してこのテストMVVMアプリケーションを開発しWPFました。しかし、バインドは機能しません。しかし、私の知る限り、エラーは検出できません。誰でもこれについて助けることができます。以下の画像とコーディングは、テストアプリを示しています。

ここに画像の説明を入力

ここに画像の説明を入力

Student.cs

using System;<br/>
using System.Collections.Generic;<br/>
using System.Linq;<br/>
using System.Text;
using System.ComponentModel;

namespace WpfNotifier
{
    public class Student : INotifyPropertyChanged
    {

    private string _name;
    public string Name
    {
        get { return this._name; }
        set
        {

            this._name = value;
            this.OnPropertyChanged("Name");
        }
    }
    private string _company;
    public string Company
    {
        get { return this._company; }
        set
        {
            this._company = value;
            this.OnPropertyChanged("Company");
        }
    }
    private string _designation;
    public string Designation
    {
        get { return this._designation; }
        set
        {
            this._designation = value;
            this.OnPropertyChanged("Designation");
        }
    }
    private Single _monthlypay;
    public Single MonthlyPay
    {
        get { return this._monthlypay; }
        set
        {
            this._monthlypay = value;
            this.OnPropertyChanged("MonthlyPay");
            this.OnPropertyChanged("AnnualPay");
        }
    }
    public Single AnnualPay
    {
        get { return 12 * this.MonthlyPay; }
    }


    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;

        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
}
4

3 に答える 3

2

バインディングはパブリック プロパティに対してのみ機能するため、

 <Grid DataContext="{Binding Path=st}"> 

動作しませんでした。this.DataContext = this; を設定する必要があります。MainWindow ctor で。ところで、なぜ静的学生オブジェクトが必要なのですか?

  public MainWindow()
  {
     ...
     this.DataContext = this;
  }

このコードを使用すると、データコンテキストがメインウィンドウになり、バインディングが機能するようになります。

実行時に DataContext と Bindings をチェックするには、Snoopを使用できます。

于 2013-06-10T06:49:05.137 に答える
1

StudentインスタンスscをウィンドウにアタッチしてみてくださいDataContext。コンストラクターに次のMainWindow行を追加します。

this.DataContext=sc;

多くの mvvm ライブラリは、これを自動的に行うことができます。これがなくても、Student 型の埋め込みリソースを定義し、それをウィンドウの DataContext に設定できます。ただし、提案として、MWWM から始めたい場合は、既に作成されている OSS ライブラリを試してください。

于 2013-06-10T05:49:54.227 に答える