Я начинаю поболтать с Silverlight (хотя в настоящее время он чувствует себя иначе), переписав существующее приложение ASP.NET - такое же хорошее место для начала, как и я.
Я «освоил» извлечение данных из базы данных, через службу и в сетку данных, а также заполнение элементов изображения в строках. Пока все хорошо.
Теперь я застрял и у меня болит голова!
Я хочу добавить простую анимацию (зеленый прямоугольник, перемещающийся по красному прямоугольнику, чтобы отобразить% прогресса) к последнему столбцу каждой строки, но не могу подключить его.
Мой xaml выглядит так:
<data:DataGrid.Columns>
.
.
.
.
<data:DataGridTemplateColumn>
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel x:Name="AnimationPanel">
<StackPanel.Resources>
<Storyboard x:Key="ShowProgress">
<DoubleAnimation Storyboard.TargetProperty="Width"
Storyboard.TargetName="goalProgressBar_Complete"
From="0" To="50"
Duration="0:0:5">
</DoubleAnimation>
</Storyboard>
</StackPanel.Resources>
<Rectangle x:Name="goalProgressBar_Complete"
Width="1" Height="100"
Fill="#0aa60e"></Rectangle>
</StackPanel>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
, что совершенно очевидно неверно (потому что это не работает), и я начинаю думать, что просто невозможно добавить анимацию в Datagrid таким способом. Я с трудом гуглял в поисках фрагмента кода, и хотя были некоторые результаты, связанные с тантилизацией, они ни к чему не привели.
Я пытаюсь сделать что-то, что Silverlight просто не поддерживает, или я что-то упускаю очень просто?
Заранее спасибо.
Обновление:
Хотя я еще не вышел из леса, мне удалось запустить анимацию с соответствующим столбцом.
Ответ, предоставленный MasterMax, побудил меня взглянуть на EventTriggers, и пересмотренный xaml выглядит так:
<data:DataGridTemplateColumn>
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Rectangle x:Name="GoalProgress" Height="100" Width="1" Fill="Green">
<Rectangle.Triggers>
<EventTrigger RoutedEvent="Rectangle.Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Width"
Storyboard.TargetName="GoalProgress"
From="0" To="50" Duration="0:0:5">
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Rectangle.Triggers>
</Rectangle>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
Все, что мне нужно сейчас сделать, это связать значение% в свойстве «Кому» и добавить нижележащий красный прямоугольник. Без сомнения, это окажется не так просто, как я сейчас надеюсь, но тогда было бы не весело, иначе бы это было; -)