我目前正在從數據庫中顯示一個表的datagrid-WPF。 該表格顯示有關學生結果的信息爲通過和失敗。 現在我想動畫數據網格單元格上的單元格爲 當它爲PASS時爲綠色,當爲失敗時爲紅色。當某些條件爲真時,在WPF中爲數據網格的單元格設置動畫效果?
如何在c#和XAML中實現這個? 謝謝。
我目前正在從數據庫中顯示一個表的datagrid-WPF。 該表格顯示有關學生結果的信息爲通過和失敗。 現在我想動畫數據網格單元格上的單元格爲 當它爲PASS時爲綠色,當爲失敗時爲紅色。當某些條件爲真時,在WPF中爲數據網格的單元格設置動畫效果?
如何在c#和XAML中實現這個? 謝謝。
使用樣式和轉換器
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>
此鏈接對於數據網格中的單元動畫非常有用。 在這個環節上,有更清晰的解釋...
How do I change the background color of a cell using WPF Toolkit Datagrid
您可以使用的東西作爲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
是在我的類中的一個主要的綁定在用戶界面上。
我希望有幫助。
最好。
非常感謝。我有一個包括CultureInfo文化的問題,我的Intellisense只接受CultureInfoIetfLanguageTagConverter文化。 這會產生一個問題。我已經包含了System.Globalization.CultureInfo。但我仍然面臨這個問題。 – user1221765
我不確定你的意思 - 請問你能否對這個問題更具體一些? –
如果是智能感知問題,請執行以下操作刪除此文件夾中的文件:%AppData%\ Roaming \ Microsoft \ VisualStudio \ 10.0 \ ReflectedSchemas vs2010 %AppData%\ Roaming \ Microsoft \ VisualStudio \ 11.0 \ ReflectedSchemas vs2012 –