目标:
减少紧耦合并增加用户控制1和2的松耦合。
问题:
是否可以从主窗口向用户控件1和2发送一些实例?
如果是,您是否有关于它的示例或推荐链接?
信息:
- 我正在使用VS 2013
Xaml代码:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:usercontrol_menu="clr-namespace:usercontrol_menu;assembly=usercontrol_menu" xmlns:usercontrol_kassa="clr-namespace:usercontrol_kassa;assembly=usercontrol_kassa" x:Class="main_system.MainWindow"
Title="MainWindow" Height="900" Width="1300 ">
<Grid>
<Frame x:Name="mainFrame"/>
<ContentControl x:Name="cc_content" Content="ContentControl" HorizontalAlignment="Left" Margin="482,144,-228,0" VerticalAlignment="Top" Height="298" Width="1038"/>
<usercontrol_menu:UserControl1 HorizontalAlignment="Left" VerticalAlignment="Top"/>
<usercontrol_kassa:UserControl1 HorizontalAlignment="Left" Margin="10,344,0,0" VerticalAlignment="Top"/>
</Grid>
</Window>
答案 0 :(得分:0)
考虑使用Window.GetWindow
方法。
http://msdn.microsoft.com/en-us/library/system.windows.window.getwindow(v=vs.110).aspx
var wnd = Window.GetWindow(this); //Assuming this is a user control (or any DependencyObject).
答案 1 :(得分:0)
看here
您也可以对PRISM
感兴趣因此,一旦你拥有了IoC容器,就可以将它传递给你所有的UserControls(通过ViewModels或其他东西),并使用它,你可以访问你在其中注册的任何内容。
答案 2 :(得分:0)
在ctor中传递引用
namespace UserControlPassReference
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
UserControl1 uc1 = new UserControl1(this);
}
}
}
namespace UserControlPassReference
{
public partial class UserControl1 : UserControl
{
private Window main;
public UserControl1()
{
InitializeComponent();
}
public UserControl1(Window Main)
{
InitializeComponent();
main = Main;
}
}
}