Как извлечь раскадровку из Viewport3d.Triggers в wpf - PullRequest
2 голосов
/ 28 февраля 2012

У меня есть отдельный файл xaml, который выглядит следующим образом:

<Viewport3D x:Name="ZAM3DViewport3D" ClipToBounds="true" Width="400" Height="300" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006" xmlns:c="http://schemas.openxmlformats.org/markup-compatibility/2006" c:Ignorable="d">
<Viewport3D.Triggers>
    <EventTrigger RoutedEvent="Viewport3D.Loaded">
        <EventTrigger.Actions>
            <BeginStoryboard>
                <Storyboard Duration="Forever" FillBehavior="HoldEnd" BeginTime="0:0:0" x:Name="storyboard" d:StoryboardName="OnLoaded">
.....

И у меня есть этот фрагмент кода в программе:

....
FileStream fs = new FileStream(mm.path, FileMode.Open, FileAccess.Read); //
Viewport3D v3d = (Viewport3D)XamlReader.Load(fs);
....

Я хотел бы знать, как яможет извлечь раскадровку из EventTrigger.Actions.Я думаю, это будет выглядеть так:

Storyboard sb = (Storyboard)v3d.Triggers[0]....

Кто-нибудь знает, как это сделать?

1 Ответ

1 голос
/ 28 февраля 2012

Если вам нужно Storyboard где-то еще, кроме Triggers, определите его как ресурс.Затем вы можете ссылаться на него в BeginStoryboard с помощью StaticResource, а в коде вы можете найти его с помощью FindResource или получить его непосредственно из свойства Resources.

<Viewport3D.Resources>
    <Storyboard x:Key="ThatSb">...</Storyboard>
<Viewport3D.Resources>
<!-- .... -->
    <BeginStoryboard Storyboard="{StaticResource ThatSb}"/>
Storyboard sb = (Storyboard)v3d.Resources["ThatSb"];

Не очень хорошая альтернатива на самом деле бросает вам путь, что-то вроде

var trigger = (EventTrigger)v3d.Triggers[0];
var beginSb = (BeginStoryboard)trigger.Actions[0];
var sb = beginSb.Storyboard;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...