我在其中一个课程中使用TabControl
。但是,我不想膨胀这个类并将所有代码放入其中,以及TabItems的所有XAML
。
经过一些谷歌搜索后,我想出了UserControl
。所以我为每个UserControl
创建了一个TabItem
,其TabItem
中的UserControl
的C#代码。
这里的问题是,我需要将一些数据从我的父窗口(包含TabControl
的窗口)传输到UserControls
,以正确显示该选项卡所需的数据。
我在UserControl
中创建了XAML
,代码如下:
<TabItem Name="userTab" Header="Gebruikers" HorizontalAlignment="Stretch">
<local:UserTabControl x:Name="userTabPanel"/>
</TabItem>
这是我UserControl
的构造函数代码:
public UserTabControl() {
setUsersView(); // NEED DATA FOR THIS
setUserData((User)usersView.SelectedItem);
InitializeComponent();
}
这是UserControl
中需要父窗口变量的类变量:private static Parser m_config;
当我运行它时,我收到编译错误:
“对象引用未设置为对象的实例。”
指向我创建UserControl的XAML行。
所以,这里的结论是我无法将变量传递给UserControl,并希望在这种情况下有一些建议或提示或指导如何做到这一点。我在哪里遇到所需的功能?
答案 0 :(得分:-1)
我不确定这是最好的方法,但对我来说效果很好。
首先,我创建 CustomUserControl 类继承自 UserControl 的类,使用约束器将其父Form作为属性,如下所示:
public partial class CustomUserControl : UserControl
{
MainForm parentForm;
public CustomUserControl(MainForm mainForm)
{
parentForm = mainForm;
}
...
...
private void doSomthing()
{
parentForm.MainFormMember = 1;
}
}
在MainForm中:
public partial class MainForm : Form
{
private int MainFormMember{ get; set; }
private CustomUserControl customUserControl;
public MainForm()
{
InitializeComponent();
// Create and add the CustomUserControl manually and not from ToolBox
customUserControl = new CustomUserControl(this);
this.Controls.Add(customUserControl);
}
...
...
}
通过这种方式,您可以从UserControl
访问Form组件