嘗試將舊 Silverlight 應用程式中的某些行為移植到 WPF,該應用程式允許用戶通過移動/最小化/最大化各種 UserControls 來配置他們的視圖。在 UserControl.Resources 中宣告了幾個 StoryBoard,然后通過它們的 x:Name 從代碼中訪問。
<Storyboard x:Name="MaximizeStoryboard" Completed="MaximizeStoryboard_Completed" Storyboard.TargetName="WholeControl">
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetProperty="(FrameworkElement.Width)">
<SplineDoubleKeyFrame x:Name="MaximizeWidth" KeyTime="00:00:00.3000000" Value="0"/>
</DoubleAnimationUsingKeyFrames>
...
在 WPF 中,將 x:Name 更改為 x:Key 后,我可以通過以下方式訪問情節提要:
Storyboard maximizeStoryboard = (Storyboard)Resources["MaximizeStoryboard"];
以前用過
MaximizeWidth.Value = Container.Contents.ActualWidth;
在開始影片之前從代碼中設定恢復寬度(和其他值)。這在 WPF 中不起作用。獲取訪問權限以便可以從代碼中設定這些值的正確方法是什么?
uj5u.com熱心網友回復:
一種可能的方法是通過 children Storyboard
,找到DoubleAnimationUsingKeyFrames
child 然后得到第一個KeyFrame
。
Storyboard maximizeStoryboard = (Storyboard)Resources["MaximizeStoryboard"];
var doubleAnimationUsingKeyFrames = maximizeStoryboard.Children.OfType<DoubleAnimationUsingKeyFrames>().FirstOrDefault();
if (doubleAnimationUsingKeyFrames != null)
{
if (doubleAnimationUsingKeyFrames.KeyFrames.Count > 0)
{
var keyFrame = doubleAnimationUsingKeyFrames.KeyFrames[0] as SplineDoubleKeyFrame;
if(keyFrame !=null)
{
keyFrame.Value = Container.Contents.ActualWidth;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/472164.html