我被卡在WPF中的動畫。我需要在數據網格中設置一行(閃爍),在該行中檢查所有複選框選項(總計3)。wpf datagrid中的閃爍行不起作用
<DataGrid x:Name="employeesGrid" SelectedItem="{Binding SelectedRow, Mode=TwoWay}" SelectedIndex="{Binding SelectedEmployeeIndex, Mode=TwoWay}" Style="{StaticResource dataGridStyle}" ItemsSource="{Binding Employees}">
<DataGrid.ItemContainerStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=NumberOfSkills}" Value="3">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="blinkingRow">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.5" RepeatBehavior="Forever" AutoReverse="true" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard x:Name="notBlinkingRow">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="1" Duration="0:0:0.5" RepeatBehavior="Forever" AutoReverse="true" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.ItemContainerStyle>
<DataGrid.Columns>
...
<DataGridTemplateColumn Header="Skills" IsReadOnly="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding Skills, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" IsChecked="{Binding IsChecked, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Command="{Binding Path=DataContext.SaveChangesCommand, RelativeSource={RelativeSource Mode=Self}}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
...
</DataGrid>
In view model I have。
public int NumberOfSkills
{
get
{
int count = 0;
foreach(Skill skill in ((EmployeeViewModel)SelectedRow).Skills)
{
if(skill.IsChecked)
{
count++;
}
}
return count;
}
}
爲什麼這不起作用?我嘗試了很多我在互聯網上找到的解決方案,但沒有任何工作不成功。發佈的示例與msdn網站上的代碼非常相似,所以我真的不知道這裏有什麼問題。
當你致電'NumberOfSkills'的PropertyChanged通知?它不在您發佈的代碼中,沒有它,DataGrid不會知道它已更改。 – icebat