проблем при внедряването на xbap mvvm

Опитвам се да внедря шаблон за проектиране на mvvm за xbap приложение, но не мога да извърша просто обвързване на текст.

Следва дефиницията на моя DemoViewModel.cs,

клас DemoViewModel: INotifyPropertyChanged { име на низ;

    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
            OnPropertyChanged("Name");
        }
    }

    public DemoViewModel()
    {
        Name = "test";
    }

    protected virtual void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }        
}

Свързвам изгледа към viewmodel, използвайки код зад изгледа,

public DemoView() { InitializeComponent(); DataContext = нов DemoViewModel(); }

Следва обвързващата дефиниция за текстово поле, което се вижда,


person Mstechuser1    schedule 28.05.2010    source източник
comment
xaml код за обвързване, ‹TextBox Margin=112,53,68,0 Name=textBox1 Height=23 VerticalAlignment=Top› ‹TextBox.Text› ‹Binding Path=Name Mode=TwoWay UpdateSourceTrigger=PropertyChanged/› ‹/TextBox.Text› ‹/TextBox› Според мен „тестът“ трябва да се показва в текстовото поле при изпълнение, което не се случва. Моля, поправете, ако греша тук   -  person Mstechuser1    schedule 28.05.2010
comment
Тествах вашия код и той работи перфектно. Не съм сигурен какво става. Когато отстранявате грешки в приложението, проверете изходния си прозорец, в него се показват грешки при свързване на данни. Вижте дали някое от съобщенията в прозореца е от полза.   -  person Agies    schedule 29.05.2010
comment
да, сега нещата се случват, както се очакваше, не съм сигурен, че текстът не беше показан по време на първото ми изпълнение.. все пак благодаря много   -  person Mstechuser1    schedule 01.06.2010


Отговори (2)


Изглежда, че сте закачили всичко правилно. По време на изпълнение погледнете прозореца „Изход“ и вижте дали ви дава някакви предупреждения за вашето обвързване. Освен това се опитайте да опростите малко своя xaml до следното и вижте дали това помага:

<TextBox Text="{Binding Name, Mode=TwoWay}"/>
person JSprang    schedule 28.05.2010
comment
хей, съжалявам за забавения отговор... Нещата сега работят според очакванията... но единствената промяна, която направих, е да направя класа DemoViewModel като публичен..... Но същото обвързване работи добре като wpf приложение с клас DemoViewModel като private... може ли някакви причини, поради които класът на модела на изглед трябва да бъде направен ПУБЛИЧЕН за xbap appl, докато не се изисква в случай на WPF? - person Mstechuser1; 01.06.2010

Въз основа на вашия коментар, към отговора на JSPrang, знам какво не е наред =)

XBAP няма разрешения за използване на отражение и следователно може да се свързва само с публични класове, освен ако не се изпълнява при пълно доверие.

person Jens    schedule 14.11.2010