簡體   English   中英

如何從WPF中的Viewport3d.Triggers中提取Storyboard

[英]How to extract Storyboard from Viewport3d.Triggers in wpf

我有一個單獨的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]....

有誰知道如何做到這一點?

如果您需要Triggers旁邊的Storyboard ,請將其定義為資源。 然后,您可以使用StaticResourceBeginStoryboard引用它,並在代碼中使用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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM