2010-06-17 3 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

나는 셀의 각 속성을 설정할 때 행에 설정할 수도 있다는 것을 깨달았습니다. 그래서 나는 행에 변환기를 할당했다.

셀 스타일이 행 스타일보다 우선하므로이 스타일이 설정된 셀은 변환기의 영향을받지 않습니다.

그래서 셀 수준의 유연성과 각 열에 대해 Convert가 실행됩니다.

0

아마도 당신은 멤버 변수에 컨버터의 결과를 캐시 할 수있다.

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

감사합니다. 캐싱은 확실히 좋은 생각입니다. 단지 복잡성과 유지 관리를 추가합니다. –