2012-12-07 25 views

回答

1

使用樣式和轉換器

public class SomeConverter: IValueConverter 
{ 
    public object Convert(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     string cellValue = value.ToString(); 
     return cellValue == "PASS"; 
    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     return false; 
    } 
} 

<DataGrid ItemsSource="{Binding List}" AutoGenerateColumns="False"> 
<DataGrid.Resources> 
    <myApp:SomeConverter 
     x:Key="SomeConverter"> 
    </myApp:SomeConverter> 
    <Style TargetType="DataGridCell" x:Key="FlashStyle"> 
     <Style.Triggers> 
      <DataTrigger 
       Binding="{Binding Col1, 
       Converter={StaticResource SomeConverter}}" 
       Value="True" > 
       <DataTrigger.EnterActions> 
        <BeginStoryboard> 
         <Storyboard 
          x:Name="Blink" 
          AutoReverse="True" 
          RepeatBehavior="Forever"> 
          <ColorAnimationUsingKeyFrames 
           BeginTime="00:00:00" 
           Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"> 
           <EasingColorKeyFrame 
            KeyTime="00:00:01" 
            Value="Green" /> 
          </ColorAnimationUsingKeyFrames> 
         </Storyboard> 
        </BeginStoryboard> 
       </DataTrigger.EnterActions> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</DataGrid.Resources> 
<DataGrid.Columns> 
    <DataGridTextColumn 
     Binding="{Binding Col1}" 
     CellStyle="{StaticResource FlashStyle}"></DataGridTextColumn> 
    <DataGridTextColumn 
     Binding="{Binding Col2}"></DataGridTextColumn> 
</DataGrid.Columns> 

,幷包括值的第二數據觸發=在XAML錯誤,並觸發紅色

並添加樣式到DataGrid列

<DataGrid.Columns> 
<DataGridTextColumn 
    Binding="{Binding SomeCol}" 
    CellStyle="{StaticResource FlashStyle}"></DataGridTextColumn> 
<DataGridTextColumn 
    Binding="{Binding AnotherCol}" 
    CellStyle="{StaticResource FlashStyle}"></DataGridTextColumn> 

+1

非常感謝。我有一個包括CultureInfo文化的問題,我的Intellisense只接受CultureInfoIetfLanguageTagConverter文化。 這會產生一個問題。我已經包含了System.Globalization.CultureInfo。但我仍然面臨這個問題。 – user1221765

+0

我不確定你的意思 - 請問你能否對這個問題更具體一些? –

+0

如果是智能感知問題,請執行以下操作刪除此文件夾中的文件:%AppData%\ Roaming \ Microsoft \ VisualStudio \ 10.0 \ ReflectedSchemas vs2010 %AppData%\ Roaming \ Microsoft \ VisualStudio \ 11.0 \ ReflectedSchemas vs2012 –

2

您可以使用的東西作爲DataGridTemplateColumn ..

如下的例子..

<DataGridTemplateColumn CellStyle="{StaticResource CenterAlignCell}" Header="Result" IsReadOnly="True" Width="*" Visibility="Visible" CanUserResize="True" SortMemberPath="GAIN_AT_POSITION" CanUserSort="True"> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <StackPanel Background="{Binding GainHighlight}"> 
           <TextBlock Text="{Binding GAIN_AT_POSITION, StringFormat=N2}" Foreground="{Binding GainForeGround}"/> 
          </StackPanel> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 

PS:GainHighlight是在我的類中的一個主要的綁定在用戶界面上。

我希望有幫助。

最好。

相關問題