关闭 MainWindow 网格中的 UserControl

Closing a UserControl in a Grid of MainWindow

我正在尝试通过单击按钮关闭用户控件。 用户控件位于 mainwindow.

的网格中

这就是我打开它的方式,它是有效的。

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

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

    }

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

现在在用户控件中我有一个确认登录的按钮。 (还没有代码,这只是一个模型,可以在 class 中显示我想要它的外观) 我希望这个按钮可以关闭 grdVensters 中的这个用户控件,这样我的主 window 就绪了。

我似乎无法在我的用户控件中访问 grdVensters。我可以做一个 link 吗?

尝试过:Close current UserControl 但最佳答案关闭了我不想要的 MainWindow。

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

提前致谢!

如果你想使用 WPF,你真的应该选择 MVVM。网络上有大量资源。但是,我创建了一个小示例,可以引导您走向正确的方向。您可以通过在 ViewModel 上设置相关 属性 来 show/hide 登录视图。 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>

代码隐藏

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