2

PhoneApplicationPage の表示状態の管理について質問があります。基本的に、VisualStateManager アプローチを使用してページ自体の状態を設定できますか? 最終的には Control クラスを継承するので、このようなものが適用されるはずです。

私は試して失敗したので質問しています。これが私のコードです:

<phone:PhoneApplicationPage 
x:Class="Encountered.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="Common">
        <VisualState x:Name="State1">
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="(UIElement.Opacity)" To="1" Duration="0"/>
            </Storyboard>
        </VisualState>
        <VisualState x:Name="State2">
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="(UIElement.Opacity)" To="0" Duration="0"/>
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

<StackPanel Orientation="Vertical">
    <HyperlinkButton x:Name="button" NavigateUri="/Views/EditPage.xaml" Content="Go"/>
    <Button Click="Button_Click">state</Button>
</StackPanel>


</phone:PhoneApplicationPage>

コード ビハインドで:

public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
            VisualStateManager.GoToState(this, "State1", true);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            VisualStateManager.GoToState(this, "State2", true);
        }
    }

何が間違っている可能性がありますか?

4

1 に答える 1

0

VisualStateManager を使用すると、コントロールが特定の状態になるタイミングを指定できます。

したがって、すべてをグリッドでラップするだけです:

<Grid>
    <VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="Common">
        <VisualState x:Name="State1">
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="(UIElement.Opacity)" To="1" />
            </Storyboard>
        </VisualState>
        <VisualState x:Name="State2">
            <Storyboard>
                <DoubleAnimation Storyboard.TargetName="button" Storyboard.TargetProperty="(UIElement.Opacity)" To="0" />
            </Storyboard>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

<StackPanel Orientation="Vertical">
    <HyperlinkButton x:Name="button" NavigateUri="/Views/EditPage.xaml" Content="Go" />
    <Button Click="Button_Click" >state</Button>
</StackPanel>
</Grid>
于 2012-09-24T11:40:51.480 に答える