我尝试了一些有关将我自己创建的用户控件元素添加到列表框或堆栈面板的操作,但是并没有获得任何成功,而是导致了NullReferenceException,我不知道为什么...
我的用户控件看起来像这样:
public partial class ShiftInformationItem : UserControl
{
public ShiftInformationItem()
{
InitializeComponent();
}
}
和xaml:
<Grid>
<LabelContent="Benutzername:" />
<Label Content="01.03.2014 14:19" />
<TextBox Text="Eintrag ..." />
<Expander Header="Comments (0)">
<Grid Background="#FFE5E5E5"/>
</Expander>
</Grid>
在主窗口中,我可以将其添加到列表框或堆栈面板中,而不会出现任何麻烦:
<ListBox>
<controls:ShiftInformationItem />
</ListBox>
或者:
<StackPanel Name="ShiftInformationPanel">
<controls:ShiftInformationItem />
</StackPanel>
但是当我尝试用C#添加它时:
ShiftInformationList.Items.Add(new ShiftInformationItem());
ShiftInformationPanel.Children.Add(new ShiftInformationItem());
它导致NullReferenceException并说我要添加的对象为null。
有人能解释我为什么吗?
我非常感谢所有预先提供的有益和有益的答案!
更新:
public partial class HoBusReceptionMain : Window
{
public HoBusReceptionMain()
{
InitializeComponent();
}
private void RibbonWin_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
RibbonTab r = (RibbonTab)e.AddedItems[0];
switch (r.Header.ToString())
{
case "Shift Information":
InitializeShiftInformationTab();
break;
default:
MessageBox.Show(e.AddedItems[0].ToString());
break;
}
}
private void InitializeShiftInformationTab()
{
//here I want to add the new ShiftInformationItem
}
}
更新2:
感谢所有评论,它显示了,我的列表|| Panel为空。但是两者都包含在主窗口中(在HoBusReceptionMain上方)
我在应用程序中使用功能区,并且选择或加载功能区选项卡时,将触发RibbonWin_SelectionChanged事件...功能区定义下方定义的列表或面板
我怀疑您是在InitializeComponent()
打电话之前添加的。
将添加的代码移到InitializeComponent()下面,它将像从XAML一样工作。问题是控件在InitializeComponent()
调用之前未初始化,因此导致NullReferenceException
。
public MainWindow()
{
InitializeComponent();
ShiftInformationList.Items.Add(new ShiftInformationItem());
ShiftInformationPanel.Children.Add(new ShiftInformationItem());
// ShiftInformationPanel is null here
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句