在MainWindow中更改UserControl可见性

时间:2017-03-09 13:16:41

标签: c# wpf xaml user-controls progress-bar

我的UserControls中有两个MainWindow,如图所示。

<local:_SplashScreenModal x:Name="_SplashModalControl"  Visibility="Visible"   />

<local:_LoginModal x:Name="_loginModalControl" Visibility="Collapsed"  />

一个是启动画面用户控件,另一个是登录表单用户控件。 我的挑战现在是,我的启动画面有一个进度条,进度条也有一个事件,如图所示。

<ProgressBar Grid.Row="1" Name="loading" BorderBrush="Transparent" Background="Transparent" Margin="0,10,0,20" Foreground="White" Width="300" Height="3">
            <ProgressBar.Triggers>
                <EventTrigger RoutedEvent="ProgressBar.Loaded">
                    <BeginStoryboard>
                        <Storyboard Completed="Storyboard_Completed"  BeginTime="00:00:01">
                            <DoubleAnimation From="0.0" To="100.0" Duration="00:00:6" Storyboard.TargetProperty="(ProgressBar.Value)" >
                                <DoubleAnimation.EasingFunction>
                                    <CircleEase />
                                </DoubleAnimation.EasingFunction>
                            </DoubleAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </ProgressBar.Triggers>
        </ProgressBar>

事件Completed="Storyboard_Completed"必须折叠启动画面并使登录表单usercontrol在MainWindow中保持可用,但我不知道该怎么做,我真的需要帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Window.GetWindow方法获取对父窗口的引用,然后设置另一个Visibility的{​​{1}}属性,前提是您可以在窗口类之外使用它。

您可以通过在XAML中将UserControl属性设置为x:FieldModifierpublic或通过代码隐藏的属性公开它来实现此目的。

<强> MainWindow.xaml:

internal

<强> SplashScreenModal.xaml.cs:

<local:_LoginModal x:Name="_loginModalControl" Visibility="Collapsed" x:FieldModifier="public" />