Вопросы по MVVM
Atom
06.08.2018
Дмитрий_


Добрый день.
Гугл не помогает.

Во View имею sscontrol:LogControl


В Model находится LogManager


Вопрос:
Как правильно добавить GuiLogListener слушателя к _logManager, не нарушая MVVM?

Теги:


Спасибо:


1 2  >
Support

Фотография
Дата: 06.08.2018
Ответить


Добрый день

Да, именно так сделано в нашем примере https://github.com/Stock...g/MainWindow.xaml.cs#L50
Спасибо:

Дмитрий_

Фотография
Дата: 06.08.2018
Ответить


Добрый день

Верно и код работает, но данный пример сделан не по шаблону MVVM.
Вопрос был, как реализовать данную строку https://github.com/Stock.../MainWindow.xaml.cs#L50 , не нарушая шаблон проектирования архитектуры приложения MVVM ( https://ru.wikipedia.org...ki/Model-View-ViewModel )?
Спасибо:

Support

Фотография
Дата: 07.08.2018
Ответить


Добрый день

Наши контролы созданы про общему принципу с контролами .NET Framework. Они используются в паттернах общим спобосом, независимо от того, какой контрол используется.
Спасибо:

Дмитрий_

Фотография
Дата: 07.08.2018
Ответить


Добрый день

Я и не спорю,что контролы не созданы про общему принципу с контролами .NET Framework.

1) Вопрос был, как реализовать строку https://github.com/Stock.../MainWindow.xaml.cs#L50 , не нарушая шаблон проектирования архитектуры приложения MVVM?

Поясню.
2) К какому свойству Monitor или LogControl мне нужно реализовать binding во View, чтобы в Model строка _logManager.Listeners.Add(new GuiLogListener(LogControl)); была по шаблону MVVM?
3) Или нужен другой подход?
4) Как Вы решаете данную задачу (GuiLog и MVVM)?
Спасибо:

Дмитрий_

Фотография
Дата: 09.08.2018
Ответить


Есть возможный вариант, но он выдаёт исключение.

Во View


Во View-Model


В Model


Исключение появляется во View
Снимок.PNG
Снимок.PNG

Как сделать так, чтобы LogControlMessages не было null? (public class LogMessageCollection не имеет конструкторов)
Снимок.PNG 11 KB (497) Снимок.PNG 114 KB (607)
Спасибо:

Support

Фотография
Дата: 10.08.2018
Ответить


Добрый день

Приведите пожалуйста текст внутренней ошибки.
Спасибо:

Дмитрий_

Фотография
Дата: 10.08.2018
Ответить


Добрый день

System.Windows.Markup.XamlParseException: '"Задание свойства "StockSharp.Xaml.LogControl.Messages" вызвало исключение.": номер строки "86" и позиция в строке "31".'
ArgumentNullException: Значение не может быть неопределенным.

StackTrace
в StockSharp.Xaml.LogControl.#=qv1cxjjxQCJGrTsmD_OIPyHN1T2kDut4cQ$7fRdFMrtk=(LogMessageCollection #=qFz1XRL0F7TtXcoTGTU_NJw==)
в StockSharp.Xaml.LogControl.#=qztdWRVJpOGPrVBNzIk8hEUU2RBOL0_5nD26bcLlgHuc=(DependencyObject #=qT_3wg4AVpI3UsCy5v8eTgA==, DependencyPropertyChangedEventArgs #=qUByj$GkMSWKTiWxctUdQTQ==)
в System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
в System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
в System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
в System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
в System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
в System.Windows.Baml2006.WpfMemberInvoker.SetValue(Object instance, Object value)
в MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value)
в MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)

Снимок.PNG

Как сделать так, чтобы LogControlMessages не было null? (public class LogMessageCollection не имеет конструкторов)
Снимок.PNG 9 KB (589)
Спасибо:

Support

Фотография
Дата: 10.08.2018
Ответить


Возможно не стоит использовать паттерн с данным контролом. На текущий день конструктор класса закрыт.
Спасибо:

Дмитрий_

Фотография
Дата: 10.08.2018
Ответить


Ок,

1) У Вас есть похожий лог контрол, который поддерживает MVVM?
2) Почему у Вас скрыт данный конструктор класса? (Что нужно, чтобы его открыть?)
Спасибо:

Дмитрий_

Фотография
Дата: 10.08.2018
Ответить


Если кому-нибудь пригодится -> простейший gui-logger по MVVM.
Снимок.PNG

Во View:


Во View-Model:


В Model:


Снимок.PNG 5 KB (547)
Спасибо: Support
1 2  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy