关闭 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 登录视图。 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();
}
}
}
我正在尝试通过单击按钮关闭用户控件。 用户控件位于 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 登录视图。 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();
}
}
}