1

如果我将回调附加到我的主用户控件的加载事件并检查ActualWidth网格列的值,该值仍然为 0。我觉得很奇怪,因为文档指出:“加载事件在最终事件之前引发渲染,但在布局系统计算出所有必要的渲染值之后。”

基本上我需要,ActualWidth所以我可以设置动画的“到”值(所以动画从 0 的宽度到实际宽度)。

4

3 回答 3

3

和值在活动ActualWidth期间ActualHeight可用SizeChanged。效果很好,因此您可以根据需要在应用程序调整大小时更新计算。

最近使用事件在屏幕上随机放置元素发布了这个

于 2009-12-15T07:31:31.943 回答
1

我认为您可能试图以错误的方式解决问题。

您最好的选择是为ScaleTransform添加到GridsRenderTransform属性的 a 设置动画。这是一个这样做的例子:

   <Grid x:Name="LayoutRoot">
        <Grid.Triggers>
            <EventTrigger RoutedEvent="Grid.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetName="MyScaleTransform" Storyboard.TargetProperty="ScaleX" From="0" To="1" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Grid.Triggers>

        <Grid Background="Blue" >
            <Grid.RenderTransform>
                <ScaleTransform x:Name="MyScaleTransform"  />
            </Grid.RenderTransform>
        </Grid>
    </Grid>
于 2009-12-11T10:54:32.040 回答
1

您可以挂钩或覆盖LayoutUpdated控件中的事件,而不是 Loaded 事件吗?您必须添加一些额外的逻辑以确保您的动画仅在适当的时间运行一次,但这可能会给您提供所需的额外灵活性。

于 2009-12-15T07:32:49.390 回答