在 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 的引用,然后设置另一个 UserControl
的 Visibility
属性,前提是你让它在 window class.
之外可用
您可以通过在 XAML 中将它的 x:FieldModifier
属性设置为 public
或 internal
或通过 属性 公开它来实现代码隐藏。
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;
}
}
如图所示,我的 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 的引用,然后设置另一个 UserControl
的 Visibility
属性,前提是你让它在 window class.
您可以通过在 XAML 中将它的 x:FieldModifier
属性设置为 public
或 internal
或通过 属性 公开它来实现代码隐藏。
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;
}
}