关闭MainWindow网格中的UserControl

时间:2016-11-15 10:52:34

标签: c# wpf user-controls

我试图通过单击按钮关闭用户控件。 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。我可以建立链接吗?

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

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

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果你想使用WPF,你应该去MVVM。网上有大量资源。但是,我创造了一个小例子,可以引导你走向正确的方向。您可以通过在ViewModel上设置关联属性来显示/隐藏登录视图。 BooleanToVisibilityConverter会将bool值转换为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();
        }
    }
}