2011-06-23 24 views
0

WPF中的新手並且使用datagrid控件對項目進行分組,數據源自java消息Q,並且項目在到達時動態添加。WPF Datagrid分組 - 綁定轉換器不動態更新的項目

我正在使用GroupStyle顯示分組名稱,項目計數和讀取的自定義轉換器顯示已執行的數量。

我遇到的問題是,物品到達時物品計數會更新,但自定義轉換類不會被調用。

<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> 

而在轉換器類:

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時有一些被其他作爲它們加載後一個2項從MQ讀取。

例如:我有2行SELL爲1,賣爲BUY爲1 最初在加載時,集合只看到1行,執行的數量顯示爲-3。

當我切換標籤,然後訂單現在有2項以及Exe數量變爲-2

任何想法請正確的價值?

回答

0

就我個人而言,我已經取消了一次性使用轉換器,轉而將轉換邏輯放入ViewModel的屬性中。但是,如果預計將在多個不同的Views/ViewModel中使用轉換,那麼我會將轉換邏輯放在專用轉換器中。

我想你已經在轉換器中設置了一個斷點來查看它何時被調用,以及它的輸出是什麼?

如果是這樣,我會有興趣知道它何時被調用,它是輸出。否則,這將是我會採取的第一步。

根據我的經驗,轉換器經常遇到VM Properties不存在的問題。

+0

網格由GUI上的用戶分組,因此不確定某個屬性是否可用於獲取該特定組的總計數。在這種情況下,我仍然可以使用屬性。調試似乎打到所有組,但只顯示該集合中有一行而不是整個一堆,並添加一個新行時,這不會觸發。 – Kannan