2010-06-01 5 views
5

저는이 방법을 사용하여 셀 값 (즉, 음수 값의 경우 빨간색 텍스트, 녹색 값의 경우 녹색)을 기반으로 개별 셀을 포맷 할 수있는 사용자 정의 DataGrid를 만들려고합니다 ...DataGridTextColumn에서 상속 받아 GenerateElement를 재정의합니다.

How to get Binding value of current cell in a WPFToolkit DataGrid

또한 음수에서 괄호 안의 값 (즉, -2.34에서 (2.34))으로 변환해야합니다. 나는 상속/초과 근무를해야합니다. 내 질문은 어떻게 재정의 된 GenerateElement 메서드에서 셀의 값에 액세스 할 수 있습니다. 사전에

덕분에, 필

답변

2

내 접근 방식은 잘못이었다. 나는 ...

type FixedDecimalConverter() = 
    interface IValueConverter with 
     member this.Convert(value, targetType, parameter, culture) = 
      match value :?> Double with 
       | Globals.DataGridHelper.IsNegative x -> 
        sprintf "(%.2f%%)" (Math.Abs x) :> obj       
       | Globals.DataGridHelper.IsPositive x -> 
        sprintf "%.2f%%" x :> obj 

     member this.ConvertBack(value, targetType, parameter, culture) = raise <| NotImplementedException() 

type ForegroundValueConverter() = 
    interface IValueConverter with 
     member this.Convert(value, targetType, parameter, culture) = 
      match value :?> Double with 
       | Globals.DataGridHelper.IsNegative x -> Globals.DataGridHelper.redBrush :> obj 
       | Globals.DataGridHelper.IsPositive x -> Globals.DataGridHelper.greenBrush :> obj 

     member this.ConvertBack(value, targetType, parameter, culture) = raise <| NotImplementedException() 

그리고 XAML ...

<data:DataGridTemplateColumn Header="YTD v. Sector" x:Name="YTDvSector" Visibility="Collapsed"> 
          <data:DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <TextBlock TextAlignment="Right" VerticalAlignment="Center" 
              Text="{Binding ytdSectorReturn.value, Converter={StaticResource fcFixedDecimalConverter}}" 
              Foreground="{Binding ytdSectorReturn.value, Converter={StaticResource fcForegroundValueConverter}}"/> 
           </DataTemplate> 
          </data:DataGridTemplateColumn.CellTemplate> 
         </data:DataGridTemplateColumn> 

그리고 배관을 ... IValueConverter을 사용하고과 같이 텍스트 및 전경 특성을 결합하는 데 필요한

<UserControl.Resources> 
     <y:FixedDecimalConverter x:Key="fcFixedDecimalConverter" /> 
     <y:ForegroundValueConverter x:Key="fcForegroundValueConverter" /> 
    </UserControl.Resources> 
관련 문제