首页 文章

关闭MainWindow网格中的UserControl

提问于
浏览
1

我试图通过单击按钮关闭用户控件 . usercontrol位于主窗口的网格中 .

这是我打开它的方式,它的工作原理 .

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        UsLogin _UsLogin = new UsLogin();
        OpenUserControl(_UsLogin);

    }

    private void OpenUserControl(UsLogin _UsLogin)
    {
        grdVensters.Children.Add(_UsLogin);
    }
}

现在在usercontrol中我有一个确认登录的按钮 . (没有代码,这只是一个模型,在课堂上显示我想要它看起来)我希望这个按钮关闭grdVensters中的这个用户控件,所以我准备好我的主窗口 .

我似乎无法访问我的usercontrol中的grdVensters . 我可以 Build 链接吗?

试过:Close current UserControl但最好的答案关闭MainWindow我不想要的东西 .

这看起来像我需要但不能使它在我的情况下工作 . Causing a UserControl to remove itself (WPF)

提前致谢!

1 回答

  • 0

    如果你想使用WPF,你应该去MVVM . 网上有大量资源 . 但是,我已经创建了一个小例子,可以引导您找到正确的方向 . 您可以通过在ViewModel上设置关联属性来显示/隐藏登录视图 . BooleanToVisibilityConverterbool 值转换为 Visibility 值 . 我还添加了一个CheckBox来演示如何更改可见状态的简单示例 .

    XAML

    <StackPanel>
        <StackPanel.Resources>
            <BooleanToVisibilityConverter x:Key="bToV" />
        </StackPanel.Resources>
        <CheckBox IsChecked="{Binding Path=IsLoginVisible, UpdateSourceTrigger=PropertyChanged}" />
        <Button Content="Login"
                Visibility="{Binding Path=IsLoginVisible, Converter={StaticResource bToV}}" />
        <!--<yournamespace:UsLogin Visibility="{Binding Path=IsLoginVisible, Converter={StaticResource bToV}}/>-->
    </StackPanel>
    

    Code Behind

    public partial class MainWindow  
    {
        public MainWindow()
        {
            this.InitializeComponent();
    
            DataContext = new MainViewModel();
        }
    }
    
    public class MainViewModel : ViewModelBase
    {
        private bool _isLoginVisible;
        public bool IsLoginVisible
        {
            get
            {
                return _isLoginVisible;
            }
            set
            {
                _isLoginVisible = value;
                OnPropertyChanged();
            }
        }
    }
    

相关问题