2013-06-10 2 views
0

Я новичок в WPF. Я разработал этот тест MVVM Приложение, использующее WPF. Но привязка не работает. Но насколько я знаю, ошибок не обнаружено. может ли кто-нибудь помочь в этом. ниже изображений и кодирования отображается тестовое приложение.WPF привязка Не работает

enter image description here

enter image description here

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)); 
     } 
    } 
} 
} 
+3

довольно неплохие изображения, которые вы могли бы прикрепить к xaml, самому cs. –

+0

Спасибо .. Dj ill do next time –

+0

Ошибки в ваших привязках появятся в окне «Вывод» при отладке. Если у вас их есть, обмен ими поможет! –

ответ

2

связывания просто работать для общественных свойств, поэтому вашего

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

не работал. вы должны установить this.DataContext = this; в вашем MainWindow ctor. Кстати, зачем вам статический объект-ученик?

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

с этим кодом ваш datacontext является вашим основным окном, и теперь ваша привязка может работать.

Чтобы проверить DataContext и Bindings во время выполнения, вы можете использовать Snoop.

+0

st уже является публичной собственностью. спасибо за ответ ур –

+0

, тогда вы должны уточнить свой вопрос, потому что там st только статическое поле – blindmeis

+0

это общедоступное статическое свойство .. как показано на снимке экрана –

1

Попытка присоединить Student экземпляр sc к окну DataContext. В MainWindow застройщик добавьте строку:

this.DataContext=sc; 

Многие библиотеки MVVM можете сортировать сделать это automtically. Без этого вы можете определить встроенный ресурс типа Student и установить его в DataContext окна. Но в качестве предположения, если вы хотите начать с MWWM, попробуйте уже созданную библиотеку OSS.

+0

Это сработало хорошо. Но есть ли способ обойтись без использования DataContext в codbehind ... Я имею в виду использование DataContext только в XAML –

+0

@ TheArkenstone обновляет ответ –

0

В фоновом коде (xaml.cs файл), после того, как InitailizeComponent(); оператор добавить следующий фрагмент кода:

this.DataContext=new Student(); 

Add the default constructor in Student.cs 
public Student() 
{ 
} 
+0

Спасибо .. за ответ. Аруши, я просто пытаюсь использовать Datacontext в XAML, а не код. возможно, –