2011-05-30 188 views
1

我有Infragistics XamDataGrid,並在其中,有幾列顯示數據的百分比。XamDataGrid字段值作爲漸變背景

現在我希望這些列以百分比形式顯示值,並將Background作爲2色漸變顯示,其中第1種顏色將綁定到百分比值,第2種顏色將顯示左值。

解決此問題的方法是模板化cellvaluepresenter,通過它可以對單元格執行樣式設置。

您可以使用TargetType =「{x:Type igDP:CellValuePresenter}」創建樣式。

但是現在問題出現了,我該如何決定後端來的價值和根據價值來顯示背景。

以下是驗證碼。在此代碼中,當我在CellValuePresenterStyle中使用StaticResource時。綁定工作正常,但風格的轉換器不被調用。當我在CellValuePresenterStyle中使用DynamicResource時,綁定中斷,列中的值爲空。

<igDP:XamDataPresenter x:Name="xamDataPresenter1" Height="300" DataSource="{Binding DV}" > 
     <igDP:XamDataPresenter.FieldLayoutSettings> 
      <igDP:FieldLayoutSettings AutoGenerateFields="True" HeaderPrefixAreaDisplayMode="FieldChooserButton" 
             /> 
     </igDP:XamDataPresenter.FieldLayoutSettings> 

     <igDP:XamDataPresenter.FieldLayouts> 
      <igDP:FieldLayout> 
       <igDP:FieldLayout.FieldSettings> 
        <igDP:FieldSettings CellClickAction="SelectCell" AllowEdit="False" /> 
       </igDP:FieldLayout.FieldSettings> 
       <igDP:FieldLayout.Fields> 
        <!--<igDP:UnboundField Name="ProductID" Label="Product ID" />--> 
        <igDP:Field Name="LocationID" DisallowModificationViaClipboard="True" > 
         <igDP:Field.Settings> 
          <igDP:FieldSettings CellValuePresenterStyle="{DynamicResource myCustomFieldCell}"/> 
         </igDP:Field.Settings> 
        </igDP:Field> 
        <!--You can add more Field objects here--> 
       </igDP:FieldLayout.Fields> 
      </igDP:FieldLayout> 
     </igDP:XamDataPresenter.FieldLayouts>   
    </igDP:XamDataPresenter> 

代碼風格

<local:StringToDoubleConverter x:Key="stringToDoubleConverter" /> 


    <Style x:Key="myCustomFieldCell" TargetType="{x:Type igDP:CellValuePresenter}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> 
        <Grid>           
         <Border Panel.ZIndex="0" Width="{Binding ElementName=textBlock,Path=Text,Converter={StaticResource stringToDoubleConverter}}" HorizontalAlignment="Left"> 
          <Border.Background> 
           <LinearGradientBrush> 
            <GradientStop Color="Red" Offset="0" /> 
            <GradientStop Color="Transparent" Offset="1" /> 
            <GradientStop Color="White" Offset=".99" /> 
           </LinearGradientBrush> 
          </Border.Background> 
         </Border> 
          <TextBlock Panel.ZIndex="1" 
           Width="Auto" 
           Height="Auto" 
           Text="{TemplateBinding Content}"                   
           HorizontalAlignment="Center" 
           Margin="5,0,0,0"          
           VerticalAlignment="Center"         
           x:Name="textBlock" /> 
        </Grid>      
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

誰能給這方面的任何解決辦法。

感謝,

VJ

回答

1

上述代碼中的所有內容都是正確的,只需使用下面的代碼更改樣式即可。

<Style x:Key="myCustomFieldCell" TargetType="{x:Type igDP:CellValuePresenter}"> 
     <Setter Property="OverridesDefaultStyle" Value="True"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}"> 
        <Grid>        
         <ContentPresenter Panel.ZIndex="1"         
           Content="{TemplateBinding Content}"                  
           HorizontalAlignment="Center" 
           Margin="5,0,0,0"          
           VerticalAlignment="Center"         
           x:Name="contentPresenter" /> 
         <Border Panel.ZIndex="0" Width="{Binding ElementName=contentPresenter, Path=Content, Converter={StaticResource stringToDoubleConverter}}" HorizontalAlignment="Left"> 
          <Border.Background> 
           <LinearGradientBrush> 
            <GradientStop Color="Red" Offset="0" /> 
            <GradientStop Color="Transparent" Offset="1" /> 
            <GradientStop Color="White" Offset=".99" /> 
           </LinearGradientBrush> 
          </Border.Background> 
         </Border> 
        </Grid>       
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
0

我相信你可以創建兩個轉換器將計算梯度開始的顏色/停止鍵,並且將接受通過數據綁定百分比值。

+0

是的,我可以做到這一點。但是我應該綁定Field/Cell的哪個屬性以使背景顯示。 – 2011-05-30 06:52:33

+0

我已經實現了大部分的事情。只是我不能以價值爲基礎顯示背景。你能告訴我解決它的辦法嗎?你的幫助將非常棒。 – 2011-05-30 09:08:12