在 MainWindow 中更改 UserControl 的可见性

Change UserControl Visibility In MainWindow

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

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

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

一个是闪屏用户控件,另一个是登录表单用户控件。 我现在的挑战是,我的Splash Screen有一个进度条,进度条还有一个事件,如图。

<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" 必须折叠初始屏幕并使登录表单用户控件在 MainWindow 中可见,但我不知道该怎么做,我真的需要帮助.提前致谢。

您可以使用 Window.GetWindow 方法获取对父 window 的引用,然后设置另一个 UserControlVisibility 属性,前提是你让它在 window class.

之外可用

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

MainWindow.xaml:

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

SplashScreenModal.xaml.cs:

private void Storyboard_Completed(object sender, EventArgs e)
{
    MainWindow parentWindow = Window.GetWindow(this) as MainWindow;
    if (parentWindow != null)
    {
        parentWindow._loginModalControl.Visibility = Visibility.Visible;
        this.Visibility = Visibility.Collapsed;
    }
}