Код состоит из следующих элементов:
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, без сделок. Весь день ушёл на поиск причины, хотя ещё в пятницу табличка выводилась. Код не менял. В то же время стакан, например, выводится как надо. В чём может быть проблема?
Kommentare (24)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Трейдер синхронный или нет?
Возможно причина та же самая, что и у меня: не приходит 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