简体   繁体   English

关闭MainWindow网格中的UserControl

[英]Closing a UserControl in a Grid of MainWindow

I am trying to close a usercontrol with a button click. 我试图通过单击按钮关闭用户控件。 The usercontrol is in a grid of the mainwindow. usercontrol位于主窗口的网格中。

This is how i open it and it works. 这是我打开它的方式,它的工作原理。

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

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

    }

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

Now in the usercontrol i have a button to confirm the login. 现在在usercontrol中我有一个确认登录的按钮。 (no code yet this just a mockup to show in class how i want it to look) I want this button to close this usercontrol in grdVensters so I have my main window ready. (没有代码,这只是一个模型,在课堂上显示我想要它看起来)我希望这个按钮关闭grdVensters中的这个用户控件,所以我准备好我的主窗口。

I can't seem to access grdVensters in my usercontrol. 我似乎无法访问我的usercontrol中的grdVensters。 Can i make a link? 我可以建立链接吗?

tried: Close current UserControl but best answer closes MainWindow what i don't want. 尝试: 关闭当前的UserControl,但最好的答案关闭MainWindow我不想要的。

This looks like what i need but can't make it work in my case. 这看起来像我需要但不能使它在我的情况下工作。 Causing a UserControl to remove itself (WPF) 导致UserControl自行删除(WPF)

Thanks in advance! 提前致谢!

You should really go for MVVM if you want to work with WPF. 如果你想使用WPF,你应该去MVVM。 There are tons of resources on the web. 网上有大量资源。 However, I've created a small example that should lead you to the right direction. 但是,我已经创建了一个小例子,可以引导您找到正确的方向。 You can show/hide the login view by setting the correlating property on the ViewModel. 您可以通过在ViewModel上设置关联属性来显示/隐藏登录视图。 The BooleanToVisibilityConverter converts the bool value to a Visibility value. BooleanToVisibilityConverterbool值转换为Visibility值。 I also added a CheckBox to demonstrate a simple example how you could change the visible state. 我还添加了一个CheckBox来演示如何更改可见状态的简单示例。

XAML 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();
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM