所以我有申请和另一个子表格:
public partial class SubForm: MetroWindow...
以下是我如何从我的主Sub form
打开我的form
:
SubForm subForm = new SubForm();
subForm.ShowDialog();
在我的Sub form
内,我有chart
控件:
<telerik:RadCartesianChart
x:Name="chart" />
Combobox
:
<ComboBox
Name="cbInterfaces"
ItemsSource="{Binding Path=(my:MyClass.MachineInterfaces)}"
SelectedIndex="0"
SelectionChanged="cbInterfaces_SelectionChanged"/>
所以我注意到在Sub form
方法之后InitializeComponent
操作后,代码进入我的Combobox
SelectionChanged
事件,我的chart
控件是仍然null
尚未创建。
所以我再次使用我的Combobox
并再次更改选择(在这种情况下我的chart
不为空)我不能使用它
答案 0 :(得分:1)
如果窗口或RadCartesianChart
尚未初始化或加载,您可以立即从事件处理程序返回:
private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!this.IsLoaded || chart == null || !chart.IsLoaded)
return; //do nothing
//your code...
}
是的,但问题是,在创建并打开此表单后,我想立即在聊天中看到我的鼻烟,而不是再次更改我的组合框选择......
在调用SelectedIndex
方法后以编程方式设置InitializeComponent()
属性:
public partial class SubForm : Window
{
public SubForm()
{
InitializeComponent();
cbInterfaces.SelectedIndex = 0;
}
private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
//...
}
}
<ComboBox
Name="cbInterfaces"
ItemsSource="{Binding Path=(local:MyClass.MachineInterfaces)}"
SelectionChanged="cbInterfaces_SelectionChanged"/>