所以我有应用程序和另一个子表格:
public partial class SubForm: MetroWindow...
这是我从主form
打开Sub 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
不是null)
,如果尚未初始化或加载窗口或RadCartesianChart
,您可以立即从事件处理程序返回:
private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!this.IsLoaded || chart == null || !chart.IsLoaded)
return; //do nothing
//your code...
}
是的,但是问题是在创建和打开此表格后,我想在聊天中立即看到我的鼻烟,而不是再次更改我的ComboBox选择...
在调用InitializeComponent()
方法之后以编程方式设置SelectedIndex
属性:
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"/>