﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Вопросы по MVVM</title>
  <id>~/topic/9765/voprosy-po-mvvm/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-26T05:00:45Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=9765" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/45053/</id>
    <title type="text">Добрый день Встроенного binding у графика нет. </title>
    <published>2018-09-17T11:50:48Z</published>
    <updated>2018-09-17T11:50:48Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Встроенного binding у графика нет.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/45029/</id>
    <title type="text">Здравствуйте. Вопрос аналогичный предыдущему (только вместо sscontrol:LogControl -&amp;gt; sscontrol:Chart)...</title>
    <published>2018-09-13T00:25:53Z</published>
    <updated>2018-09-13T00:25:53Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Здравствуйте.&lt;/p&gt;
&lt;p&gt;Вопрос аналогичный предыдущему (только вместо sscontrol:LogControl -&amp;gt; sscontrol:Chart)
По данному примеру из документации &lt;a href="https://doc.stocksharp.ru/html/287125e1-7c7e-4be3-a8ce-5018538e613f.htm"&gt;https://doc.stocksharp.ru/html/287125e1-7c7e-4be3-a8ce-5018538e613f.htm&lt;/a&gt;
все работает, но реализация по MVVM заходит в тупик.&lt;/p&gt;
&lt;p&gt;private void Connector_CandleSeriesProcessing(CandleSeries candleSeries, Candle candle)
{
if (candle.State == CandleStates.Finished)
{
var chartData = new ChartDrawData();
chartData.Group(candle.OpenTime).Add(_candleElement, candle);
&lt;strong&gt;Chart&lt;/strong&gt;.Draw(chartData);
}
}&lt;/p&gt;
&lt;p&gt;Как реализовать поддержку Chart контрола по MVVM? К какому свойству Chart контрола (во View) делать привязку, чтобы в Model было возможным отрисовывание chartData?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44728/</id>
    <title type="text">Если кому-нибудь пригодится -&amp;gt; простейший gui-logger по MVVM. Снимок.PNG Во View: Во View-Model: pub...</title>
    <published>2018-08-10T18:39:28Z</published>
    <updated>2018-08-10T20:05:30Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Если кому-нибудь пригодится -&amp;gt; простейший gui-logger по MVVM.
&lt;img src="/file/107404/Снимок.PNG" alt="Снимок.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;Во View:&lt;/p&gt;
&lt;div class="spoiler"&gt;&lt;p Binding="" MessageCollection=""&gt;&amp;lt;DataGrid ItemsSource=&amp;quot;&amp;quot; Grid.Column=&amp;quot;0&amp;quot; Grid.Row=&amp;quot;8&amp;quot; Grid.ColumnSpan=&amp;quot;8&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Во View-Model:&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;public ListCollectionView MessageCollection
{
get { return downloaderM.MessageCollection; }
set
{
downloaderM.MessageCollection = value;
OnPropertyChanged();
}
}&lt;/summary&gt;
&lt;/details&gt;
&lt;p&gt;В Model:&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;private ListCollectionView logMessageCollection;
private ObservableCollection&amp;lt;LogMessage&amp;gt; logMessageObservableCollection = new ObservableCollection&amp;lt;LogMessage&amp;gt;();&lt;/summary&gt;
&lt;p&gt;В конструкторе: logMessageCollection = new ListCollectionView(logMessageObservableCollection);&lt;/p&gt;
&lt;p&gt;Для добавления лога:
App.Current.Dispatcher.Invoke(() =&amp;gt;
{
logMessageObservableCollection.Add(new LogMessage(&amp;quot;Test1&amp;quot;, &amp;quot;Test2&amp;quot;, &amp;quot;Test3&amp;quot;));
});
Где класс LogMessage, это
internal class LogMessage
{
public DateTime CurrentTime { get; set; }
public string Type { get; set; }
public string SourceName { get; set; }
public string Message { get; set; }&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    public LogMessage(string type, string sourceName, string message)
    {
        CurrentTime = DateTime.Now;
        Type = type;
        SourceName = sourceName;
        Message = message;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44725/</id>
    <title type="text">Ок, У Вас есть похожий лог контрол, который поддерживает MVVM? Почему у Вас скрыт данный конструктор...</title>
    <published>2018-08-10T13:13:32Z</published>
    <updated>2018-08-10T13:13:32Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Ок,&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;У Вас есть похожий лог контрол, который поддерживает MVVM?&lt;/li&gt;
&lt;li&gt;Почему у Вас скрыт данный конструктор класса? (Что нужно, чтобы его открыть?)&lt;/li&gt;
&lt;/ol&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44724/</id>
    <title type="text">Возможно не стоит использовать паттерн с данным контролом. На текущий день конструктор класса закрыт...</title>
    <published>2018-08-10T13:06:42Z</published>
    <updated>2018-08-10T13:06:42Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Возможно не стоит использовать паттерн с данным контролом. На текущий день конструктор класса закрыт.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44723/</id>
    <title type="text">Добрый день System.Windows.Markup.XamlParseException: &amp;apos;&amp;quot;Задание свойства &amp;quot;StockSharp.Xaml.LogControl...</title>
    <published>2018-08-10T13:05:02Z</published>
    <updated>2018-08-10T13:05:02Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;System.Windows.Markup.XamlParseException: '&amp;quot;Задание свойства &amp;quot;StockSharp.Xaml.LogControl.Messages&amp;quot; вызвало исключение.&amp;quot;: номер строки &amp;quot;86&amp;quot; и позиция в строке &amp;quot;31&amp;quot;.'
ArgumentNullException: Значение не может быть неопределенным.&lt;/p&gt;
&lt;p&gt;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&amp;amp; 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)&lt;/p&gt;
&lt;p&gt;&lt;img src="/file/107401/Снимок.PNG" alt="Снимок.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;Как сделать так, чтобы LogControlMessages не было null? (public class LogMessageCollection не имеет конструкторов)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44721/</id>
    <title type="text">Добрый день Приведите пожалуйста текст внутренней ошибки. </title>
    <published>2018-08-10T12:54:23Z</published>
    <updated>2018-08-10T12:54:23Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Приведите пожалуйста текст внутренней ошибки.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44713/</id>
    <title type="text">Есть возможный вариант, но он выдаёт исключение. Во View Во View-Model public LogMessageCollection L...</title>
    <published>2018-08-09T15:27:28Z</published>
    <updated>2018-08-09T15:54:23Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Есть возможный вариант, но он выдаёт исключение.&lt;/p&gt;
&lt;p&gt;Во View&lt;/p&gt;
&lt;div class="spoiler"&gt;&lt;p Binding="" LogControlMessages=""&gt;&amp;lt;sscontrol:LogControl Messages=&amp;quot;&amp;quot; Grid.Column=&amp;quot;0&amp;quot; Grid.Row=&amp;quot;8&amp;quot; Grid.ColumnSpan=&amp;quot;8&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Во View-Model&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code&gt;    public LogMessageCollection LogControlMessages
    {
        get { return downloaderM.LogControlMessages; }
        set
        {
            downloaderM.LogControlMessages = value;
            OnPropertyChanged();
        }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;В Model&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;LogControlMessages.Add(new LogMessage(new StrategyObserver(), DateTime.Now, LogLevels.Debug, &amp;quot;+++++++++++++&amp;quot;));&lt;/summary&gt;
&lt;/details&gt;
&lt;p&gt;Исключение появляется во View
&lt;img src="/file/107392/Снимок.PNG" alt="Снимок.PNG" /&gt;
&lt;img src="/file/107393/Снимок.PNG" alt="Снимок.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;Как сделать так, чтобы LogControlMessages не было null? (public class LogMessageCollection не имеет конструкторов)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44697/</id>
    <title type="text">Добрый день Я и не спорю,что контролы не созданы про общему принципу с контролами .NET Framework. Во...</title>
    <published>2018-08-07T15:15:30Z</published>
    <updated>2018-08-07T15:15:30Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Я и не спорю,что контролы не созданы про общему принципу с контролами .NET Framework.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Вопрос был, как реализовать строку &lt;a href="https://github.com/StockSharp/StockSharp/blob/master/Samples/Common/SampleLogging/MainWindow.xaml.cs#L50" target="_blank"&gt;https://github.com/StockSharp/StockSharp/blob/master/Samples/Common/SampleLogging/MainWindow.xaml.cs#L50&lt;/a&gt; , не нарушая шаблон проектирования архитектуры приложения MVVM?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Поясню.
2) К какому свойству Monitor или LogControl мне нужно реализовать binding во View, чтобы в Model строка _logManager.Listeners.Add(new GuiLogListener(LogControl)); была по шаблону MVVM?
3) Или нужен другой подход?
4) Как Вы решаете данную задачу (GuiLog и MVVM)?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44694/</id>
    <title type="text">Добрый день Наши контролы созданы про общему принципу с контролами .NET Framework. Они используются ...</title>
    <published>2018-08-07T14:59:38Z</published>
    <updated>2018-08-07T14:59:38Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Наши контролы созданы про общему принципу с контролами .NET Framework. Они используются в паттернах общим спобосом, независимо от того, какой контрол используется.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44679/</id>
    <title type="text">Добрый день Верно и код работает, но данный пример сделан не по шаблону MVVM. Вопрос был, как реализ...</title>
    <published>2018-08-06T13:51:09Z</published>
    <updated>2018-08-06T13:51:09Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Верно и код работает, но данный пример сделан не по шаблону MVVM.
Вопрос был, как реализовать данную строку &lt;a href="https://github.com/Stock...g/MainWindow.xaml.cs#L50" target="_blank"&gt;https://github.com/Stock...g/MainWindow.xaml.cs#L50&lt;/a&gt; , не нарушая шаблон проектирования архитектуры приложения MVVM ( &lt;a href="https://ru.wikipedia.org/wiki/Model-View-ViewModel" rel="nofollow" target="_blank"&gt;https://ru.wikipedia.org/wiki/Model-View-ViewModel&lt;/a&gt; )?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44674/</id>
    <title type="text">Добрый день Да, именно так сделано в нашем примере https://github.com/StockSharp/StockSharp/blob/mas...</title>
    <published>2018-08-06T13:39:33Z</published>
    <updated>2018-08-06T13:39:33Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Да, именно так сделано в нашем примере &lt;a href="https://github.com/StockSharp/StockSharp/blob/master/Samples/Common/SampleLogging/MainWindow.xaml.cs#L50" target="_blank"&gt;https://github.com/StockSharp/StockSharp/blob/master/Samples/Common/SampleLogging/MainWindow.xaml.cs#L50&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/44665/</id>
    <title type="text">Добрый день. Гугл не помогает. Во View имею sscontrol:LogControl В Model находится LogManager privat...</title>
    <published>2018-08-05T21:41:56Z</published>
    <updated>2018-08-05T21:41:56Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.com/users/62269/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день.
Гугл не помогает.&lt;/p&gt;
&lt;p&gt;Во View имею sscontrol:LogControl&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;&amp;lt;sscontrol:LogControl x:Name=&amp;quot;LogControl&amp;quot; Grid.Column=&amp;quot;0&amp;quot; Grid.Row=&amp;quot;8&amp;quot; Grid.ColumnSpan=&amp;quot;8&amp;quot; /&amp;gt;&lt;/summary&gt;
&lt;/details&gt;
&lt;p&gt;В Model находится LogManager&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;private readonly LogManager _logManager = new LogManager();&lt;/summary&gt;
&lt;/details&gt;
&lt;p&gt;Вопрос:
Как правильно добавить GuiLogListener слушателя к _logManager, не нарушая MVVM?&lt;/p&gt;
&lt;div class="spoiler"&gt;&lt;p&gt;_logManager.Listeners.Add(new GuiLogListener(&lt;strong&gt;&lt;span style="color:red"&gt;LogControl&lt;/span&gt;&lt;/strong&gt;));&lt;/p&gt;
&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>