我试图通过单击按钮关闭用户控件。 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)
提前致谢!
答案 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();
}
}
}