簡體   English   中英

程序狀態更改在Silverlight中不起作用

[英]Programmatic state changes not working in Silverlight

我試圖通過代碼讓視覺狀態管理器改變狀態。

我在用:

Microsoft.Expression.Interactivity.Core.ExtendedVisualStateManager.GoToElementState(this.LayoutRoot, "stateRegistration", true);

但它似乎不想工作,我已經創建了一個事件處理程序和一個監聽器,但是在使用該代碼時沒有狀態改變。

誰能幫我嗎。

XAML CODE(代碼片段):

<Grid x:Name="LayoutRoot" Width="897" Height="699">
<VisualStateManager.VisualStateGroups>
<VisualState x:Name="stateRegistration">
                    <Storyboard>
                        <DoubleAnimation Duration="0" To="870" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="RegisterContent" d:IsOptimized="True"/>
                        <DoubleAnimation Duration="0" To="880" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="HomeContent" d:IsOptimized="True"/>
                        <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="btnRegRegister" d:IsOptimized="True"/>
                        <DoubleAnimation Duration="0" To="-10" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="btnRegRegister" d:IsOptimized="True"/>
                    </Storyboard>
                </VisualState>
            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>
</Grid>

謝謝。

VisualStateManager有一些奇怪的行為:它的狀態必須不在控件中,而是在子控件中。

這意味着,應該使用this參數而不是this.LayoutRoot參數調用GoToState方法,但是狀態組的定義必須位於Grid

VisualStateManager.GoToState(this, "stateRegistration", true);

我不知道從哪里獲取ExtendedVisualStateManager類,所以我使用默認類。

此外,如果狀態故事板的任何動畫失敗 - 所有動畫都將被取消。 所以嘗試使用兩個動畫的代碼示例,它必須工作:

<Grid x:Name="LayoutRoot" Width="897" Height="699">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup>
            <VisualState x:Name="stateRegistration">
                <Storyboard>
                    <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="btnRegRegister" d:IsOptimized="True"/>
                    <DoubleAnimation Duration="0" To="-10" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateY)" Storyboard.TargetName="btnRegRegister" d:IsOptimized="True"/>
                </Storyboard>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
    <Button x:Name="btnRegRegister" Content="Some button" Click="btnRegRegister_Click" VerticalAlignment="Center" HorizontalAlignment="Center">
        <Button.RenderTransform>
            <CompositeTransform TranslateX="0" TranslateY="0" />
        </Button.RenderTransform>
    </Button>
</Grid>

暫無
暫無

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

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