![](/img/trans.png)
[英]CallMethodAction works in MainWindow, but not in UserControl
[英]Closing a UserControl in a Grid of MainWindow
我试图通过单击按钮关闭用户控件。 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。 我可以建立链接吗?
尝试: 关闭当前的UserControl,但最好的答案关闭MainWindow我不想要的。
这看起来像我需要但不能使它在我的情况下工作。 导致UserControl自行删除(WPF)
提前致谢!
如果你想使用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();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.