как вызвать анимацию в mainpage.xaml из login.xaml в silverlight 4 - PullRequest
0 голосов
/ 03 марта 2012

Я делаю приложение Silverlight, используя выражение Blend 4.0.У меня есть mainpage.xaml, и я дал пользователю контроль (loginpage.xaml) на нем.Тогда у меня есть кнопка входа в пользовательский контроль (loginpage.xaml).Я также подготовил анимацию на mainpage.xaml, чтобы при нажатии пользователем кнопки входа в систему запускалась анимация.Я понятия не имею, какую команду я должен дать в кнопке входа в систему, чтобы анимация запускалась, когда пользователь нажимал на нее.или вы хотели бы дать другое предложение?Любая помощь будет очень полезна для меня.Благодарю.Я использую xaml и c #.

1 Ответ

0 голосов
/ 03 марта 2012

Вот хороший подход:

Ваше представление может напоминать это (обратите внимание, что контекст данных декоративно настроен на вашу модель представления, а свойство раскадровки на нем установлено на раскадровку статического ресурса):

<UserControl x:Class="SilverlightApplication2.MainPage"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:SilverlightApplication2"
         mc:Ignorable="d"
         d:DesignHeight="300" d:DesignWidth="400">
<UserControl.Resources>
    <Storyboard x:Name="MyStoryboard">
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="firstGrid" Storyboard.TargetProperty="(UIElement.Opacity)">
            <EasingDoubleKeyFrame KeyTime="00:00:00.5000000" Value="0"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>
<UserControl.DataContext>
    <local:My_ViewModel MyStoryboard="{StaticResource MyStoryboard}" />
</UserControl.DataContext>
<Grid x:Name="LayoutRoot" Background="White">
    <StackPanel>
    <Grid x:Name="firstGrid" Height="100" Width="100" Background="Red" />
    <Button x:Name="firstButton" Content="Click Me" Click="firstButton_Click" Height="100" Width="100" />
    </StackPanel>
</Grid>

Ваша модель представления будет выглядеть так:

    public class My_ViewModel
{
    public Storyboard MyStoryboard { get; set; }
}

А в коде вашего представления у вас может быть что-то вроде этого:

    public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();
    }

    private My_ViewModel _viewModel
    {
        get { return this.DataContext as My_ViewModel; }
    }

    private void firstButton_Click(object sender, RoutedEventArgs e)
    {
        this._viewModel.MyStoryboard.Begin();
    }
}

Надеюсь, это поможет!

...