С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/74: Рейтинг темы: голосов - 74, средняя оценка - 4.82
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
1

MVVM postgres

17.06.2020, 10:41. Показов 13765. Ответов 200
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
учу mvvm
появилось много вопросов
я создал модель
Кликните здесь для просмотра всего текста

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
public  class GlavTables:INotifyPropertyChanged
    {
        public int id { get; set; }
        private DateTime _dateCreating;
        private string _dateTara;
        private string _dateBrutto;
        private string _dateRegistration;
        private double _tara;
        private double _brutto;
        private double _netto;
        private string _typeScales;
        private string _transportNumber;
        private string _driver;
        private string _trailer;
        private string _post;
        private string _product;
        private string _sender;
        private string _payer;
        private string _consignee;
        private string _user;
        private bool _chakRegistration;
        private bool _chakBlok;
        
        public  DateTime dateCreating
        {
            get { return _dateCreating; }
            set
            {
                if (_dateCreating == value)
                    return;
 
                _dateCreating = value;
                OnPropertyChanget("dateCreating");
 
            }
        }
        public string dateTara
        {
            get {return _dateTara; }
            set
            {
                if (_dateTara == value)
                    return;
 
                _dateTara = value;
                OnPropertyChanget("dateTara");
 
            }
        }
        public string dateBrutto
        {
            get { return _dateBrutto; }
            set
            {
                if (_dateBrutto == value)
                    return;
 
                _dateBrutto = value;
                OnPropertyChanget("dateBrutto");
 
            }
        }
        public string dateRegistration
        {
            get { return _dateRegistration; }
            set
            {
                if (_dateRegistration == value)
                    return;
 
                _dateRegistration = value;
                OnPropertyChanget("dateRegistration");
 
            }
        }
        public double tara
        {
            get { return _tara; }
            set
            {
                if (_tara == value)
                    return;
 
                _tara = value;
                OnPropertyChanget("tara");
 
            }
        }
        public double brutto
        {
            get { return _brutto; }
            set
            {
                if (_brutto == value)
                    return;
 
                _brutto = value;
                OnPropertyChanget("brutto");
 
            }
        }
        public double netto
        {
            get { return _netto; }
            set
            {
                if (_netto == value)
                    return;
 
                _netto = value;
                OnPropertyChanget("netto");
 
            }
        }
        public string typeScales
        {
            get { return _typeScales; }
            set
            {
                if (_typeScales == value)
                    return;
 
                _typeScales = value;
                OnPropertyChanget("typeScales");
 
            }
        }
        public string transportNumber
        {
            get { return _transportNumber; }
            set
            {
                if (_transportNumber == value)
                    return;
 
                _transportNumber = value;
                OnPropertyChanget("transportNumber");
 
            }
        }
        public string driver
        {
            get { return _driver; }
            set
            {
                if (_driver == value)
                    return;
 
                _driver = value;
                OnPropertyChanget("driver");
 
            }
        }
        public string trailer
        {
            get { return _trailer; }
            set
            {
                if (_trailer == value)
                    return;
 
                _trailer = value;
                OnPropertyChanget("trailer");
 
            }
        }
        public string post
        {
            get { return _post; }
            set
            {
                if (_post == value)
                    return;
 
                _post = value;
                OnPropertyChanget("post");
 
            }
        }
        public string product
        {
            get { return _product; }
            set
            {
                if (_product == value)
                    return;
 
                _product = value;
                OnPropertyChanget("product");
 
            }
        }
        public string sender
        {
            get { return _sender; }
            set
            {
                if (_sender == value)
                    return;
 
                _sender = value;
                OnPropertyChanget("sender");
 
            }
        }
        public string payer
        {
            get { return _payer; }
            set
            {
                if (_payer == value)
                    return;
 
                _payer = value;
                OnPropertyChanget("payer");
 
            }
        }
        public string consignee
        {
            get { return _consignee; }
            set
            {
                if (_consignee == value)
                    return;
 
                _consignee = value;
                OnPropertyChanget("consignee");
 
            }
        }
        public string user
        {
            get { return _user; }
            set
            {
                if (_user == value)
                    return;
 
                _user = value;
                OnPropertyChanget("user");
 
            }
        }
        public bool chakRegistration
        {
            get { return _chakRegistration; }
            set
            {
                if (_chakRegistration == value)
                    return;
 
                _chakRegistration = value;
                OnPropertyChanget("chakRegistration");
 
            }
        }
        public bool chakBlok
        {
            get { return _chakBlok; }
            set
            {
                if (_chakBlok == value)
                    return;
 
                _chakBlok = value;
                OnPropertyChanget("chakBlok");
 
            }
        }
 
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanget(string propertyName="")
        {
           
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

создал сервис , который должен заполнять данными я это сделал так
Кликните здесь для просмотра всего текста

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
38
39
40
41
42
43
44
45
 public BindingList<GlavTables> LoadData()
        {
            try
            {
                string conn = "Server=192.168.1.111;Port=5432;User Id=postgres;Password=123;Database=postgres111";
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                string sql = " SELECT * FROM \"glav\" ";
                NpgsqlConnection ConnLocal = new NpgsqlConnection(conn);
                NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql, ConnLocal);
                da.Fill(ds);
                BindingList<GlavTables> glavTavles = new BindingList<GlavTables>();
                for (int i=0; ds.Tables[0].Rows.Count > i;i++)
                {
                    glavTavles.Add(new GlavTables
                {
                    
                    id = Convert.ToInt32(ds.Tables[0].Rows[i][0].ToString()),
                    dateCreating = Convert.ToDateTime(ds.Tables[0].Rows[i][2].ToString()),
                    dateTara = ds.Tables[0].Rows[i][3].ToString(),
                    dateBrutto = ds.Tables[0].Rows[i][4].ToString(),
                    dateRegistration = ds.Tables[0].Rows[i][5].ToString(),
                    tara = nullNo(ds.Tables[0].Rows[i][6].ToString()),
                    brutto = nullNo(ds.Tables[0].Rows[i][7].ToString()),
                    netto = nullNo(ds.Tables[0].Rows[i][8].ToString()),
                    typeScales = ds.Tables[0].Rows[i][11].ToString(),
                    transportNumber = ds.Tables[0].Rows[i][12].ToString(),
                    driver = ds.Tables[0].Rows[i][13].ToString(),
                    trailer = ds.Tables[0].Rows[i][14].ToString(),
                    post = "Пост1",
                    product = ds.Tables[0].Rows[i][16].ToString(),
                    sender = ds.Tables[0].Rows[i][17].ToString(),
                    payer = ds.Tables[0].Rows[i][18].ToString(),
                    consignee = ds.Tables[0].Rows[i][19].ToString(),
                    user = ds.Tables[0].Rows[i][20].ToString(),
                    chakRegistration = true,
                    chakBlok = false
                
                });
                }
                return glavTavles;
            }
            catch
            {  return null; }
        }

после чего в основном классе
Кликните здесь для просмотра всего текста

C#
1
2
3
 GlavTablesIOServices glavTablesIOServices = new GlavTablesIOServices();
            _glavTables = glavTablesIOServices.LoadData();
            dg_glavGrid.ItemsSource = _glavTables;

и тут первый вопрос. можно это сделать без циклов ? например сразу конвертировать в BindingList и как вообще правильно заполнять данными из бд?

дальше я показываю таблицу в view
Кликните здесь для просмотра всего текста

XML
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
 <DataGrid 
 
                x:Name="dg_glavGrid" AutoGenerateColumns="False" >
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=id}" IsReadOnly="True" Header="№"/>
                    <DataGridTextColumn Binding="{Binding Path=dateCreating}" IsReadOnly="True" Header="Дата создания"/>
                    <DataGridTextColumn Binding="{Binding Path=dateTara}" IsReadOnly="True" Header="Дата тара"/>
                    <DataGridTextColumn Binding="{Binding Path=dateBrutto}" IsReadOnly="True" Header="Дата брутто"/>
                    <DataGridTextColumn Binding="{Binding Path=dateRegistration}" IsReadOnly="True" Header="Дата оформления"/>
                    <DataGridTextColumn Binding="{Binding Path=tara}" IsReadOnly="True" Header="Тара"/>
                    <DataGridTextColumn Binding="{Binding Path=brutto}" IsReadOnly="True" Header="Брутто"/>
                    <DataGridTextColumn Binding="{Binding Path=netto}" IsReadOnly="True" Header="Нетто"/>
                    <DataGridTextColumn Binding="{Binding Path=typeScales}" IsReadOnly="True" Header="Тип весов"/>
                    <DataGridTextColumn Binding="{Binding Path=transportNumber}" IsReadOnly="True" Header="Т/С"/>
                    <DataGridTextColumn Binding="{Binding Path=driver}" IsReadOnly="True" Header="Водитель"/>
                    <DataGridTextColumn Binding="{Binding Path=trailer}" IsReadOnly="True" Header="Прицеп"/>
                    <DataGridTextColumn Binding="{Binding Path=post}" IsReadOnly="True" Header="Имя поста"/>
                    <DataGridTextColumn Binding="{Binding Path=product}" IsReadOnly="True" Header="Товар"/>
                    <DataGridTextColumn Binding="{Binding Path=sender}" IsReadOnly="True" Header="Отправитель"/>
                    <DataGridTextColumn Binding="{Binding Path=payer}" IsReadOnly="True" Header="Плательщик"/>
                    <DataGridTextColumn Binding="{Binding Path=consignee}" IsReadOnly="True" Header="Получатель"/>
                    <DataGridTextColumn Binding="{Binding Path=user}" IsReadOnly="True" Header="Пользователь"/>
                    <DataGridCheckBoxColumn Binding="{Binding Path=chakRegistration, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" Header="Оформление"/>
                    <DataGridCheckBoxColumn Binding="{Binding Path=chakBlok, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True" Header="Доступность"/>
                </DataGrid.Columns>
            </DataGrid>
 
        </Grid>
 
    </Grid>

и снова вопрос. мне нужно добавлять данные в BindingList и при событии добавления/удаления/изменения делать изменения в бд? Или просто делать запросы в бд update/insert и после этого заново заполнять данными? второе звучит проще и логичней для меня.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2020, 10:41
Ответы с готовыми решениями:

Mvvm
Форумчане помогите разобраться есть простенькая модель public partial class...

x:Name в MVVM
Добрый день, как обращаться к объектам из VM по их x:Name? Например, у меня есть канвас в...

MVVM
Здравствуйте, я в среде WPF нахожусь очень мало, посмотрел книжки, решил читать Мэтью Макдональда,...

MVVM
Добрый день! Пытаюсь написать программу в стиле MVVM. Вопрос такой: как передать SelectedItem...

200
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 09:01  [ТС] 141
Author24 — интернет-сервис помощи студентам
Как с помощью только view реализовать смену uc? Мне в голову приходит только 1 uc к примеру currentUС , в которой из основной vm передаётся uc которая нужна в данный момент.
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 09:02 142
onimor, разберитесь сначала почему у вас ошибка БД не подымается по стеку.
После чего я бы вам посоветовал изменить структуру приложения для лучшего понимания разделения функционала слоёв.
Так будет несколько больше кода, но зато вы поймёте зоны ответственности каждого слоя.

1
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 09:03  [ТС] 143
Цитата Сообщение от Элд Хасп Посмотреть сообщение
мне не понятны ваши объяснения.
Покажите схематически разбивку окна на регионы в различных режимах.
Минутку
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 09:09 144
Цитата Сообщение от onimor Посмотреть сообщение
Как с помощью только view реализовать смену uc?
В самом простом случае:
- свойство VM имеет базовый тип. В том числе возможно и object;
- VM записывает в него экземпляры разных производных типов;
- в View для каждого производного типа задан шаблон данных по умолчанию. В том числе может использоваться UserControl.
- для представления свойства в Региона окна используется ContentPresenter или ContentControl:
- к свойству VM привязан Content Региона.

На этом всё.
Если явно не задаётся ContentTemplate, то для каждого типа будет использоваться свой Шаблон Данных по умолчанию.

Добавлено через 1 минуту
onimor, по схеме выше.
Каждый блок - это отдельный проект.
Стрелка - это ссылка (или зависимость) из одного проекта на другой.
1
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 09:23  [ТС] 145
Цитата Сообщение от Элд Хасп Посмотреть сообщение
по схеме выше.
Каждый блок - это отдельный проект.
Стрелка - это ссылка (или зависимость) из одного проекта на другой.
Да я помню
0
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 09:24  [ТС] 146
Элд Хасп,
MVVM postgres
0
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 09:31  [ТС] 147
P.S. сброс настроек не помог
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 09:50 148
onimor, а где входная страница?

Из этой схемы просматривается следующее:
1) Регион Окна имеет два разных представлений: для показа поста и для показа настроек;
2) Смена выбранного поста изменяет привязку UC для камер постов, но сам UC остаётся прежним;
3) В меню управления (левый регион) разделено выбор постов и настройки;
4) Реализация левого региона по сути тоже состоит из двух отдельных Регионов: списочный элемент для выбора поста и снизу кнопки для других режимов;
5) Контролы для показа поста и настроек, совершенно, никак не связаны друг с другом.

Мои выводы (без учёта пункта "Показать Журнал"):
1) Управляющие функции навигатора находятся в левом регионе;
2) Управление навигацией не связанно с изменением данных;
3) Так как это не имеет отношения к данным, то реализовываться должно в View, а не в VM.


Примерный псевдокод:
C#
1
2
3
4
5
6
7
8
public class NavigatorPosts : BaseInps
{
     public SettingsVM SettingsVM{get; set;}
     public PostsVM PostsVM{get; set;}
     public Post SelectedPost {get; set;}
     public RelayCommand SelectContentCommand {get;}
     public object Content {get; set;}
}
Логика работы такая:
1) Изначально Content = null:
2) В параметр команды передаётся нужный контент для переключения: SettingsVM, выбранный пост и др.
3) По команде проверяется параметр, если это допустимый Контент, то он записывается в Content;
4) При выборе поста (изменении SelectedPost) вызывается команда с этим постом;
5) В окне в регионе у контрола (ContentPresenter или ContentControl) в ресурсах заданы Шаблоны Данных по умолчанию для настроек и поста;
6) Свойство Content привязано к свойству Content навигатора.
1
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 09:53  [ТС] 149
Цитата Сообщение от Элд Хасп Посмотреть сообщение
а где входная страница?
вход это просто диалог. При успешном входе скрывается.
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 09:54 150
Цитата Сообщение от onimor Посмотреть сообщение
P.S. сброс настроек не помог
Я тогда не знаю что делать.
Видео, что у меня работает это Решение - я показал.
Различия у нас только в самой Студии.
Может настройки, может баг какой-то, может ещё что - я не знаю с чем это может быть связано.

В тестовом решении (где я сделал вывод ошибки в окно) у вас тоже прерывается выполнение программы и до вывода текста ошибки исполнение не доходит?

Добавлено через 37 секунд
Цитата Сообщение от onimor Посмотреть сообщение
вход это просто диалог. При успешном входе скрывается.
Но он в этом же окне?
Или у него своё окно?
0
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 10:01  [ТС] 151
Цитата Сообщение от Элд Хасп Посмотреть сообщение
В тестовом решении (где я сделал вывод ошибки в окно) у вас тоже прерывается выполнение программы и до вывода текста ошибки исполнение не доходит?
да.

Цитата Сообщение от Элд Хасп Посмотреть сообщение
Но он в этом же окне?
Или у него своё окно?
в главном окне

Добавлено через 5 минут
Цитата Сообщение от Элд Хасп Посмотреть сообщение
5) Контролы для показа поста и настроек, совершенно, никак не связаны друг с другом.
В контроле "Параметры" помимо всего можно настроить каждый пост . Какие там будут камеры , с какого ip брать данные и прочее. Если будет изменен текущий пост. То нужно будет изменить привязку.
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 10:02 152
onimor, если у вас есть изменения в Решении - сделайте фиксацию.
Я подготовлю тестовый проект для вопроса в разделе ADO-БД.

Добавлено через 50 секунд
Цитата Сообщение от onimor Посмотреть сообщение
В контроле "Параметры" можно настроить каждый пост . Какие там будут камеры , с какого ip брать данные и прочее.
Эти настройки должны идти через Модель.
Непосредственно друг с другом они не связаны.
0
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 10:05  [ТС] 153
Цитата Сообщение от Элд Хасп Посмотреть сообщение
если у вас есть изменения в Решении - сделайте фиксацию.
Я подготовлю тестовый проект для вопроса в разделе ADO-БД.
Нету. Но лучше наверное сделать ответвление

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Эти настройки должны идти через Модель.
Непосредственно друг с другом они не связаны.
Да. Я забыл что при выборе поста все время обновляются привязки
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 10:08 154
Цитата Сообщение от onimor Посмотреть сообщение
Но лучше наверное сделать ответвление
Тестовое Решение будет отдельно, хотя и в этом репозитории.
Оно не будет влиять на основное Решение.
Необходимости в отдельной ветке не вижу.

Добавлено через 20 секунд
Но если хотите - создайте.
Как закончите - сообщите.
0
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 10:13  [ТС] 155
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Добавлено через 20 секунд
Но если хотите - создайте.
Как закончите - сообщите.
Сегодня я вряд ли дойду до ПК с VS. Делайте как удобно. В любом случае можно будет откатиться
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 10:43 156
Цитата Сообщение от onimor Посмотреть сообщение
Сегодня я вряд ли дойду до ПК с VS. Делайте как удобно.
Скинул фиксации.

После синхронизации запустите тестовое Решение, нажмите кнопку "Загрузить" и должно выйти вот такое окно:


Если не выйдет - создайте тему в разделе ADO-БД с вопросом почему исключение не подымается.
И дайте ссылку на тестовое Решение и его архив.
1
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
03.04.2021, 16:39  [ТС] 157
Элд Хасп, постараюсь вечером проверить

Добавлено через 5 часов 23 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если не выйдет - создайте тему в разделе ADO-БД с вопросом почему исключение не подымается.
И дайте ссылку на тестовое Решение и его архив.
Не выходит, крашится.
Позже создам. Пока это не настолько важно.
Если запустить приложение из папки, без студии, то ловится.
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
03.04.2021, 17:18 158
Цитата Сообщение от onimor Посмотреть сообщение
Если запустить приложение из папки, без студии, то ловится.
Как я понял - это какие-то настройки дебагера Студии.
Но какие именно - я не смог найти.
0
90 / 71 / 24
Регистрация: 18.02.2016
Сообщений: 738
07.04.2021, 15:34  [ТС] 159
Цитата Сообщение от Элд Хасп Посмотреть сообщение
5) В окне в регионе у контрола (ContentPresenter или ContentControl) в ресурсах заданы Шаблоны Данных по умолчанию для настроек и поста;
Кажется я снова не так что-то понял
XML
1
2
3
4
5
6
7
8
9
10
<ContentPresenter Content="{Binding CurrentVM}">
                        <ContentPresenter.Resources>
                            <DataTemplate DataType="{x:Type vm:WeightWindwosVM}">
                                <uc:WeightWindowUC />
                            </DataTemplate>
                            <DataTemplate DataType="{x:Type vm:ParametersVM}">
                                <uc:ParametersUC />
                            </DataTemplate>
                        </ContentPresenter.Resources>
                    </ContentPresenter>
Он все время создает новую копию UC при переключении. Не уверен , что так должно быть
0
Модератор
Эксперт .NET
15836 / 10984 / 2852
Регистрация: 21.04.2018
Сообщений: 32,243
Записей в блоге: 2
07.04.2021, 15:45 160
Цитата Сообщение от onimor Посмотреть сообщение
Он все время создает новую копию UC при переключении. Не уверен , что так должно быть
Это же ШАБЛОН данных.
При смене самих данных (переключении) к ним применяется наиболее подходящий шаблон.
При применении шаблона все UI элементы его фабрики создаются заново.

А вы какое хотели получить поведение?
1
07.04.2021, 15:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.04.2021, 15:45
Помогаю со студенческими работами здесь

Model в MVVM
Доброго времени суток. Начал изучать MVVM и даже что-то получается сделать, но не могу сообразить,...

Mvvm datagrid ef
Здравствуйте форумчане, у меня такая проблема есть приложение При выделении datagrid биндю...

WPF MVVM
Привет всем! Изучаю патерн MVVM. Не могу понять как реализовать ее, если допустим мне необходимо...

MVVM патерн
Всем привет. Уже писал по поводу данного стиля программирования, более менее разобрался, но...

ProgressBar в MVVM
Здравствуйте. Пытаюсь реализовать простой пример на MVVM. Суть работы заключается в работе функции...

Использование mvvm
Уже достаточно давно разбираюсь с сабжем (конкретно Prism 4) и все больше меня занимает вопрос -...


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

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