2010-06-17 40 views
0

我創建了一個轉換器,並將其分配給一個樣式。wpf樣式轉換器:使用它的每個datagrid列調用的「Convert」

比我指定的風格,我想受影響的列。

作爲行被添加,並通過調試時,我注意到轉換器轉換方法被稱爲每列1次(每次使用)。

有沒有更好的方法來優化它,以便它只被調用一次,並且所有使用它的列都會得到相同的值?

<Style x:Key="ConditionalColorStyle" TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource CellStyle}"> 
     <Setter Property="Foreground"> 
      <Setter.Value> 
       <Binding> 
        <Binding.Converter> 
         <local:ConditionalColorConverter /> 
        </Binding.Converter> 
       </Binding> 
      </Setter.Value> 
     </Setter> 
    </Style> 

回答

0

我意識到我設置給每個單元格的屬性也可以設置爲行。所以我將轉換器分配給該行。

設置了這些樣式的單元格不會受轉換器的影響,因爲單元格樣式優先於行樣式。

所以在單元級靈活性和每列的執行轉換之間存在一些折衷。

0

也許你可以緩存轉換的結果在一個成員變量。

 if (this._result == null) 
      this._result = this.LookupStyle(); 
     return this._result; 
+0

謝謝,緩存絕對是一個好主意..只是增加了複雜性和維護.. – 2010-06-22 19:20:15