2011-06-23 15 views
0

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正しい値になりますか?

答えて

0

私は個人的に私のViewModelのプロパティに変換ロジックを置くことにして、使い捨てコンバータを廃止しました。しかし、複数の異なるビュー/ビューモデルで変換が使用されることが予想される場合は、変換ロジックを専用コンバータに入れます。

私はコンバータにブレークポイントを設定して、呼び出されているときとその出力を確認したと思いますか?

もしそうなら、私はそれが呼び出され、出力されることを知りたいと思うでしょう。さもなければ、それは私が取る最初のステップでしょう。

コンバーターでは、VMプロパティには問題が発生することがよくあります。

+0

グリッドはGUI上でユーザーによってグループ化されているため、その特定のグループの合計数を得るにはここでプロパティーが有効かどうかは不明です。この場合でもプロパティを使用できますか?デバッグはすべてのグループでヒットしたようだが、コレクションに束の代わりに1つの行があることだけが表示され、新しい行が追加されたときにはこれは起動しません。 – Kannan

関連する問題