Код состоит из следующих элементов:
private QuikTrader _trader;
private readonly MyTradesWindow _myTradesWindow = new MyTradesWindow();
_trader.NewMyTrades += trades => this.GuiAsync(() => _myTradesWindow.Trades.AddRange(trades));
string tstr = "А вот и мои сделочки: \n";
foreach (var myTrade in _myTradesWindow.Trades)
{
var trade = myTrade.Trade;
tstr = tstr + string.Format("Сделка {0} по цене {1} по бумаге {2} по объему {3} в {4}.\n", trade.Id, trade.Price, trade.Security.Code, trade.Volume, trade.Time);
}
tradestb.Text = tstr;
В итоге в TextBox выводится только инициализированная строка tstr, без сделок. Весь день ушёл на поиск причины, хотя ещё в пятницу табличка выводилась. Код не менял. В то же время стакан, например, выводится как надо. В чём может быть проблема?
Комментарии (24)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Трейдер синхронный или нет?
Возможно причина та же самая, что и у меня: не приходит newStopOrders
Попробовал подставить оба варианта _trader.IsAsyncMode = true; и _trader.IsAsyncMode = false; Но всё равно вижу только строку в текстбоксе А вот и мои сделочки:
Тут, если все правильно понимаю, вы передаете пришедшие сделки в отдельное окно.
Логично предположить что где - то это окно потом показывается. В котором должны показываться сделки
Но вот эти строчки не совсем понятны
В каком месте этот код обрабатывается? Явно не внутри _myTradesWindow. Т.е. получается что в двух местах что ли информация о сделках показывается? В каком то виде в окне _myTradesWindow и еще в текстбоксе?
Если только в текстбоксе, то проще сделать так
Теперь в чем может быть причина. Проверьте срабатывает ли событие NewMyTrades. Если срабатывает, то посмотрите что находится внутри trades, точнее в одной из сделок var trade = myTrade.Trade; Есть ли в tradeданные.
Ага, я просто конструкцию типа
закомментил, и написал ту, которая выше. Там была проблема, что почему-то выводились только новые сделки при их появлении.
А почему тот блок который я опубликовал нежизнеспособен?
И вот ещё вопросец по теме. Допустим я хочу вставить таблицу в форму и для этого вставляю следующий код
Табличка не заполняется (хотя _myTradesWindow.Show() показывает окно со сделками). Я так понимаю, должен где-то "TradesDetails" прописать и что-то ещё сделать?
Сорри, но в хэлпе чисто справочный материал и как им воспользоваться, в данном случае, я не очень понимаю. Указанный код я как раз и забрал у Sample. Можете привести простенький пример как вставить таблицу с коллекцией в свою форму?
Если надо куда то складывать пришедшие сделки, сделайте отдельную коллекцию типа List<MyTrade>
Получается следующее(в вашем примере кода)
Xaml
Cs
Moadip, а если понадобится сделать кастомный набор колонок, эта строка как-то редактируется для вывода только нужной инфы? Ну например, как добавить столбик Ставка РЕПО? <xaml:TradeGrid x:Name="TradeGrid" Grid.Row="2"/>
Нет, это готовый контрол. Если нужен кастомный набор, то тогда разбираться с примерами. Посмотрел примеры, думал там готовый контрол используется. Но там как раз кастомный набор колонок делается в ListView.
А почему моя встроенная в форму табличка (пост #6) компилируется, но не выводится?
Честно говоря, не очень понимаю как это реализовывать на практике. С примером было бы легче.
Вот я создаю новую коллекцию
Подписываюсь
Пытаюсь вывести
Что не так?
P.S. Рискнул предположить, что это другой тип коллекции
но это ничего не меняет. По крайней мере в моём коде.
В примерах как раз данная коллекция и используется:
<ListView ItemsSource=""> <ListView.View> <GridView> <GridViewColumn Width="90" Header="Номер" DisplayMemberBinding="" /> ......
Чтобы не выносить себе мозг привязкой в Xaml, делайте привязку в коде. Удалите это ItemsSource="", обзовите как нибудь ListView, например MyTrades
В коде, в конструкторе главного окна сделайте привязку.
И все будет работать. А на досуге почитайте про привязку данных. Там на этом сайте вообще много чего интересного можно найти, чтобы подтянуть свои знания по C#/WPF
Теперь всё ясно. Как раз строка ItemsSource="" в примере меня и запутала.
А как сказать программе нарисовать мне табличку со стаканом?
Делаю так
или как-то так
Вывод сюда
Или так, но это тоже бред какой-то
В примерах, например, выще не понятно, где в trader.RegisterMarketDepth(lkoh) берётся именно LKOH@EQBR
Этот код каждый раз меняет привязку. Простого обновления содержимого _ri будет достаточно.
А вот кстати я так и не смог найти описание функции FirstOrDefault. Интуитивно я догадываюсь что она делает, но всё же хотелось бы увидеть её описание.
Гугл в помощь. Он помогает. Часто.
и ведь не поспоришь. супер ответ! +100500 )))
видел тут где-то в топиках ссылку на WPF, там и про LINQ оказалось. продолжу распространять знания: http://www.professorweb.ru/my/LINQ/base/level3/3_5.php
Мне кажется для всех таких вещей лучший источник - MSDN