WPFの新機能でデータグリッドコントロールを使用してアイテムをグループ化すると、データはJavaメッセージQから取得され、アイテムは到着時に動的に追加されます。WPF Datagrid Grouping - バインディングコンバータを動的に更新しないアイテム
GroupStyleを使用して、グループ化名、Items Count、および実行された数量を表示するカスタムコンバータを表示します。
問題はアイテムが到着した時点でアイテム数が更新されますが、カスタムコンバータクラスは呼び出されないことです。
<DataGrid.GroupStyle>
...
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}, Count: {1:#0}, Executed Qty: {2}">
<Binding Path="Name" />
<Binding Path="ItemCount" />
<Binding Path="Items" Converter="{StaticResource convertToExecutedQty}" />
</MultiBinding>
</TextBlock.Text>
.....
</DataGrid.GroupStyle>
およびコンバータクラス:彼らのように次々にロードされた2つの項目がある場合、上記コンバータで
public class ConvertToExecutedQty : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null && value is IEnumerable<Object>)
{
IEnumerable<TickOrderViewModel> orders = ((IEnumerable<object>) value).GetBaseElements<TickOrderViewModel>();
if (orders.Count() > 0)
{
var BuyQty = (from n
in orders
where n.side.ToUpperInvariant() == "BUY"
select n.executed_qty).Sum();
var SellQty = (from n
in orders
where n.side.ToUpperInvariant() == "SELL"
select n.executed_qty).Sum();
return BuyQty - SellQty;
}
}
return null;
}
、ときタブの負荷は、「受注」数が1でありますMQから読み込まれました。
例:SELLを1に、SELLをBUYに1として設定します。 最初は読み込み時にコレクションに1行しか表示されず、実行されたqtyに-3が表示されます。
iがタブを切り替えるとき、注文が今2つの項目及びエグゼ数量を持っているが-2
任意アイデアPLS正しい値になりますか?
グリッドはGUI上でユーザーによってグループ化されているため、その特定のグループの合計数を得るにはここでプロパティーが有効かどうかは不明です。この場合でもプロパティを使用できますか?デバッグはすべてのグループでヒットしたようだが、コレクションに束の代わりに1つの行があることだけが表示され、新しい行が追加されたときにはこれは起動しません。 – Kannan