Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
40 / 32 / 7
Регистрация: 24.03.2016
Сообщений: 270
1

Правильное построение биндинга

04.07.2016, 20:19. Показов 416. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
И снова здравствуйте.

Есть view.

Есть ViewModel :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ImmortaL
{
    public class ViewModel
    {
        Model.Test test = new Model.Test();
 
        public ViewModel()
        {   
              test.Name = "qwerty";
        }
    }
}
Есть сама модель:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
 
namespace ImmortaL
{
    public class Model
    {
        public class Test : INotifyPropertyChanged
        {
 
            private string name;
            public string Name
            {
                get{ return name; }
                set
                {
                    name = value;
                    OnPropertyChanged("Name");
                }
            }
            #region onpropertychanged
            public event PropertyChangedEventHandler PropertyChanged;
            protected virtual void OnPropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }
            #endregion
        }
    }
}
Именно класс в классе. Я реализовал OnPropertyChanged. Но как теперь мне забиндить test.Name поле в моей ViewModel? Ничего не выходит.

Добавлено через 1 минуту
Я думал создать прямо во viewmodel новую переменную, присвоить ей значение из test.Name и реализовать в этой переменной Property, но это как-то громоздко, постоянно переприсваивать значения, может есть другой способ? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2016, 20:19
Ответы с готовыми решениями:

Правильное построение функции!
Всем привет!!!!!!!!!! Подскажите как правильно, грамотно построить функцию? по таймеру,...

Правильное построение приложения БД
Доброго времени суток. Раньше писал на c++, некоторое время назад пришлось заняться...

Не правильное построение задачи
17 номер Задача на C++ #include <stdio.h> #include <math.h> #include <iostream> int...

Правильное построение программы
Добрый день. Есть некоторый вопрос по построению программы, работающей с базой данных. Есть База...

2
44 / 44 / 16
Регистрация: 02.06.2016
Сообщений: 95
05.07.2016, 10:16 2
Hastin, А зачем Вам делать класс в классе?

Добавлено через 1 час 55 минут
Вообще, думаю, что без дополнительного свойства в viewmodel не обойтись.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public string TestName
        {
            get
            {
                return test.Name;
            }
            set
            {
                test.Name = value;
                OnPropertyChanged("TestName");
            }
        }
 
        Model.Test test { get; set; }
1
40 / 32 / 7
Регистрация: 24.03.2016
Сообщений: 270
05.07.2016, 11:25  [ТС] 3
Cuguyc, так нужно 100% В классе много классов, и там же есть Основной класс, колторый содержит в себе поля из этих классов) Просто это результат генерации классов от парсинга Json, по другому не могу сделать) Спасибо, вы очень помогли мне

Добавлено через 25 минут
В общем попробовал как вы написали, ничего не выходит Ссылка на объект не указывает на экземпляр объекта )
C#
1
2
3
4
5
6
7
8
9
10
11
CharacterData.RootObject character = new CharacterData.RootObject();
 public int UserGamelvl
        {
            get { return character.Pers.Level; }
            set { character.Pers.Level = value; OnPropertyChanged("UserGamelvl"); }
        }
 
        public MainViewModel()
        {
            character.Pers.Level = 1324;
        }
не хочет работать, а было бы так удобно

Добавлено через 1 минуту
Просто у меня постоянно в классе "character" изменяются значения, и создавать новые переменные, переписывать их, это бред, проще на WinForm остаться тогда там такое же дерево

Добавлено через 9 минут
Ага, открыл я классы, что насоздавал генератор классов Json и понял почему оно мне выдаёт такую ошибку :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        public class RootObject
        {
            public string sec { get; set; }
            public List<Map> maps { get; set; }
            public List<Land> lands { get; set; }
            public List<Unit> units { get; set; }
            public List<Item> items { get; set; }
            public string mysql_error { get; set; }
            public DailyBonus dailyBonus { get; set; }
            public bool settings { get; set; }
            public Vip vip { get; set; }
            public Unitopenings unitopenings { get; set; }
            public Boss boss { get; set; }
            public List<string> tutorial { get; set; }
            public string urlCfg { get; set; }
            public Pers2 Pers { get; set; }
            public double PEFT_TEST_TOTAL { get; set; }
            public string cfgVersion { get; set; }
            public int srvTime { get; set; }
        }
Они не инициализированы по идее. Только вот не знаю, если сделать всё через new, JsonConverter не будет меня потом ругать, если я захочу десериализовать Json в этот класс?

Добавлено через 14 минут
Всё, разобрался, когда прописываю

C#
1
character = JsonConvert.DeserializeObject<CharacterData.RootObject>(str);
При десериализации, оно видимо само создаёт экземпляры этих объектов. Ошибка пропала, работает как надо)
0
05.07.2016, 11:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.07.2016, 11:25
Помогаю со студенческими работами здесь

Правильное построение запроса джойн
Плиз хелп ми! я разрабатываю приложение на C#, база данных access Есть таблица t1 и три...

Правильное построение разветвляющегося алгоритма
как правильно организовать то, а то как не поставлю все не так(ошибки ,явно неверный результат и...

Правильное ООП построение класса Aeroflot
Долго мучяюсь с тем что бы понять построение ооп. Решите задачу за всеми правилами что бы можно...

Правильное построение кода программы очистки кэша браузеров
Здравствуйте, посмотрите пожалуйста правильно ли построен код, и можно ли как то сделать его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru