我有一段時間搞清楚如何在我的WPF窗口中更改Storyboard的一個屬性。如何以編程方式更改/替換模板中的StoryBoard?
我的窗口有一個動畫,可以通過一種「捲起」動畫縮小窗口的大小。根據某些條件(不管是否設置了某個道具),我們希望窗口稍長一些以適合額外的項目。
我一直在使用this.FindResource()來抓取元素,這是沒有問題的。但是,當然,故事板被凍結,其中包含的DoubleAnimations被凍結,所以我不能改變任何東西。
所以我想,很好,我只是換出整個故事板。
<Trigger Property="IsMouseOver" Value="True">
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource ToolbarCollapse_NoIB}" />
</Trigger.ExitActions>
</Trigger>
我在想,以編程方式,我可以進入代碼隱藏並更改該觸發器以使用ToolbarCollapse_YesIB。
在這種嘗試中,我能走到這一步:
var tbTemplate = (ControlTemplate)this.FindResource("ToolbarTemplate");
var newStoryboard = (Storyboard)this.FindResource("ToolbarCollapse_YesIB");
tbTemplate.Triggers[2].ExitActions[0] = ??? needs to be a TriggerAction
這裏的地方我卡住了。如何爲那個Storyboard創建一個TriggerAction?構造函數並不適用於此,也不適用於方法。
這些類的文檔讓我覺得我的方式偏離軌道。
誰能幫助我或者使這種方法的工作,或者給我介紹到另一種方法,將更好地工作?