在MainWindow.xaml.cs
中我使用.Child切换到userControl,如下所示:
Grid1.Visibility = Visibility.Hidden;
Stage.Child = new UserControlName();
其中Grid1
是内容位于主窗口中的网格(应该隐藏,因为有一些内容会从用户控件后面查看),而Stage
是border
1}}我希望UserControl填充的元素
<Grid >
<Border x:Name="Stage" Grid.RowSpan="4" Grid.ColumnSpan="2"/>
<Grid x:Name="Grid1" FocusManager.FocusedElement="{Binding ElementName=textBox}" Margin="10,10,10,10" Width="1200" Height="649" >
UserControlName
如何关闭或隐藏xaml.cs
个文件,并将视图返回主窗口,同时将MainWindow
的{{1}}返回{{} 1}}?
答案 0 :(得分:1)
我会使用PRISM中的区域(https://msdn.microsoft.com/en-us/library/ff921098(v=pandp.40).aspx)来实现。但是如果您创建了简单的应用程序并且您不想花时间学习PRISM,您可以通过添加MainWindow类型的参数来扩展UserControlName类的构造函数,并在此对象上调用一些将视图更改为您的愿望状态的方法。 uglly代码示例:
主窗口:
private void Button_Click(object sender, RoutedEventArgs e)
{
grid1.Visibility = Visibility.Hidden;
br.Child = new UserControl2(this);
}
public void CloseView()
{
grid1.Visibility = Visibility.Visible;
br.Child = null;
}
用户控件:
private MainWindow window;
public UserControl2(MainWindow window)
{
this.window = window;
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
window.CloseView();
}
答案 1 :(得分:1)
另一种选择是使用(例如)Mvvm Light工具包和消息传递(https://msdn.microsoft.com/en-us/magazine/jj694937.aspx)。
子视图会发送消息以关闭,主窗口将收到此消息并隐藏网格。
优点是主窗口和子控件仍然是解耦的,这意味着孩子不需要了解主窗口的任何信息。
抓住这个机会,投入一些时间在Mvvm模式和Mvvm light等图书馆。