Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/74: Рейтинг темы: голосов - 74, средняя оценка - 4.82
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771

MVVM postgres

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

Студворк — интернет-сервис помощи студентам
учу 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.06.2020, 10:41
Ответы с готовыми решениями:

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

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

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

200
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 17:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от onimor Посмотреть сообщение
Крашится на попытке взять данные "System.InvalidOperationException" и не ловится.
То есть исключение возникает на строке post = await Task.Run(()=>....?
Если потом нажать F10, то перехода в catch не происходит и приложение вылетает?

Если так, то не знаю как подобное отловить.
Нужен кто-то более сведущий в БД.
Может Usaga, что подскажет.
0
 Аватар для Midian
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,717
02.04.2021, 17:41
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если потом нажать F10, то перехода в catch не происходит и приложение вылетает?
Если так, то не знаю как подобное отловить.
Ну так правильно, поток умер, поэтому перехода в catch не было, нужно внутри потока оборачивать в блоки try catch и делать там точку останова
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 17:57
Цитата Сообщение от Midian Посмотреть сообщение
Ну так правильно, поток умер, поэтому перехода в catch не было, нужно внутри потока оборачивать в блоки try catch и делать там точку останова
Так Task.Run возвращает же таск.
И если в нём возникло исключение await автоматически должен его поднять в вызывающем методе.

Или я чего-то не догоняю....

Добавлено через 1 минуту
Весь смысл в использовании таска для await именно в том, что подымает исключение из таска в метод где await.
0
 Аватар для Midian
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,717
02.04.2021, 18:02
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Так Task.Run возвращает же таск.
C#
1
2
3
4
Task.Run(()=> currentUser.Rights != "admin" 
                      ? postgresDBContext.Posts.Where(P => P.User == currentUser.Login)
                      : postgresDBContext.Posts)
                      .ToList();
В данном случае он возвращает как бэ Task<List<TablePosts>>.Run(....

Пускай обернет внутри таска в блоки и отловит Exception

Добавлено через 2 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Весь смысл в использовании таска для await именно в том, что подымает исключение из таска в метод где await.
Метка await ждет выполнения потока в асинхронном методе, а тип возвращения зависит от того что внутри описано таска, он как бы неявно может возвращать конкретный тип из потока, можно не указывать например Task<List<TablePosts>>.Run, написать Task.Run и если там возвращается тип, то он вернет его. Если внутри потока происходит Exception, поток умирает и все
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 18:06
Цитата Сообщение от Midian Посмотреть сообщение
В данном случае он возвращает как бэ Task<List<TablePosts>>.Run(....
Это понятно.
Но если в методе есть исключение, то await его должен поднять в вызывающем методе.

Простейший пример

await Task.Run(() => throw new Exception());
0
 Аватар для Midian
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,717
02.04.2021, 18:10
Для убидительности можно сделать еще вот что:
C#
1
2
3
4
5
6
7
Task.Run(()=> currentUser.Rights != "admin" 
                      ? postgresDBContext.Posts.Where(_ => _.User == currentUser.Login)
                      : postgresDBContext.Posts)
                      .ToList()).ContinueWith(_ =>
{
/// посомтреть тут что в _.Result поидее он должен сюда записать результат даже если поток завершился с ошибкой
});
Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
await Task.Run(() => throw new Exception());
Ну правильно, в данном случае он явно из таска возвращает Exception тип
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 18:13
Цитата Сообщение от Midian Посмотреть сообщение
Ну правильно, в данном случае он явно из таска возвращает Exception тип
Прикалываетесь?

Возвращение Exception это:
C#
1
await Task.Run(() => /* throw */ new Exception());
А вам показвал создание исключения.
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 19:30  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
То есть исключение возникает на строке post = await Task.Run(()=>....?
Если потом нажать F10, то перехода в catch не происходит и приложение вылетает?
Да на этой строке. Если жать f10 то переходит. Если просто запустить то не переходит

Добавлено через 2 минуты
Цитата Сообщение от Midian Посмотреть сообщение
нужно внутри потока оборачивать в блоки try catch
я уже предлагал такой вариант) , но он был не одобрен

Добавлено через 13 минут
Цитата Сообщение от Midian Посмотреть сообщение
посомтреть тут что в _.Result поидее он должен сюда записать результат даже если поток завершился с ошибкой
там
" Id = 73, Status = Faulted, Method = "{null}", Result = "{Not yet computed}" "
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 19:37
Цитата Сообщение от onimor Посмотреть сообщение
я уже предлагал такой вариант) , но он был не одобрен
Это точно не вариант.

Цитата Сообщение от onimor Посмотреть сообщение
Да на этой строке. Если жать f10 то переходит. Если просто запустить то не переходит
Ок!

Запустите такой код без точек остановки:
C#
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
           List<TablePosts> post;
 
          try 
          {
              using(PostgresDBContext postgresDBContext = new PostgresDBContext())
                  if (currentUser.Rights == "admin")
                      post = await Task.Run(()=>postgresDBContext.Posts.ToList());
                  else
                     post = await Task.Run(()=>postgresDBContext.Posts
                                 .Where(P => P.User == currentUser.Login)
                                 .ToList());
           }
           catch (Exception ex)
          {
               Debugger.Break(); // Здесь должно остановиться исполнение 
          }
И сообщите произошла остановка на на Break() или нет.
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 19:40  [ТС]
тут остановился с экзепшином
C#
1
2
3
 post = await Task.Run(() => postgresDBContext.Posts
                                    .Where(P => P.User == currentUser.Login)
                                    .ToList());
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 19:57
Цитата Сообщение от onimor Посмотреть сообщение
тут остановился с экзепшином
Я не могу понять в чём дело.
Почему при пошаговом проходе попадает в catch, а при обычном исполнении - вываливается в приложение...
Даже мыслей в голову никаких не приходит.

Приложение большое?
Можете сделать небольшой проект, что бы скачать и самому протестировать?
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 20:05  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Можете сделать небольшой проект, что бы скачать и самому протестировать?
Сейчас скину. Или можете ветку Dev вытянуть , если запустите то в MainWindowsModel, в методе
C#
1
 public async Task<IReadOnlyList<PostDto>> GetPostsForTheUserAsync()
и будет ошибка

Добавлено через 1 минуту
там сейчас разные варианты
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 20:23  [ТС]
Вот. Сам метод в КБ если запустить вылетит testProect.zip
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 20:26
Цитата Сообщение от onimor Посмотреть сообщение
Сейчас скину. Или можете ветку Dev вытянуть
Если в репе есть, то архив не надо.
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 20:30  [ТС]
торопился по этому могут быть опечатки и не правильные имена. но ошибка появляется

Добавлено через 1 минуту
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Если в репе есть, то архив не надо.
уже скинул , там новый проект 2 класса всего лишь. да есть там все и проверял
0
 Аватар для Midian
610 / 392 / 198
Регистрация: 31.03.2013
Сообщений: 2,717
02.04.2021, 20:39
Цитата Сообщение от Элд Хасп Посмотреть сообщение
я уже предлагал такой вариант) , но он был не одобрен
Это точно не вариант.
В смысле? для дебага это самое то, чтобы понять, что вообще происходит и из-за чего падает запрос. Обренуть внутри таска в блоки и посмотреть что за ошибка
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 20:50  [ТС]
Цитата Сообщение от Midian Посмотреть сообщение
В смысле? для дебага это самое то, чтобы понять, что вообще происходит и из-за чего падает запрос. Обренуть внутри таска в блоки и посмотреть что за ошибка
Из-за чего понятно. Такого не будет в реальности. Не понятно почему не ловиться как остальные
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 20:59
Цитата Сообщение от onimor Посмотреть сообщение
и будет ошибка
Будет.
Но она прекрасно подымается вверх.
Я добавил вложенность.

Тестовый проект добавил в репозиторий.

Собственно код теста:
C#
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
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
 
            testTextAsync();
        }
 
        private async void testTextAsync()
        {
            try
            {
                tBlock.Text = string.Join(", ", (await test()).Select(post => post.Id));
            }
            catch (Exception ex)
            {
 
                tBlock.Text = ex.Message;
            }
        }
        private async Task<List<TablePosts>> test()
        {
 
            //try
            //{
            using (PostgresDBContext postgresDBContext = new PostgresDBContext())
 
                return await Task.Run(() => postgresDBContext.Posts.ToList());
            //}
 
            //catch (Exception ex)
            //{
            //    Debugger.Break(); // Здесь должно остановиться исполнение 
            //}
        }
    }
Добавлено через 1 минуту
Цитата Сообщение от onimor Посмотреть сообщение
Не понятно почему не ловиться как остальные
Всё ловится.
Вы что-то делаете не так.

Добавлено через 29 секунд
В основном проекте как можно протестировать?
Там вначале логин пароль требуется.
0
96 / 76 / 25
Регистрация: 18.02.2016
Сообщений: 771
02.04.2021, 21:00  [ТС]
сейчас уберу вход, чтоб сразу была ошибка
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
02.04.2021, 21:08
Цитата Сообщение от Midian Посмотреть сообщение
В смысле? для дебага это самое то
Там надо было не саму ошибку поймать - она и так ясна.
А разобраться почему она по стеку вызова не подымается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2021, 21:08

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru