WPF:为什么在创建图表控件之前触发组合框SelectionChanged事件

WPF:为什么在创建图表控件之前触发组合框SelectionChanged事件,wpf,charts,combobox,Wpf,Charts,Combobox,所以我有申请表和另一个子表: public partial class SubForm: MetroWindow... 下面是我如何从我的主表单打开我的子表单: SubForm subForm = new SubForm(); subForm.ShowDialog(); 在我的子表单中我有一个图表控件: <telerik:RadCartesianChart x:Name="chart" /> 因此我注意到,在InitializeComponent方法之后,在子表单操作之

所以我有申请表和另一个子表:

public partial class SubForm: MetroWindow...
下面是我如何从我的主
表单
打开我的
子表单

SubForm subForm = new SubForm();
subForm.ShowDialog();
在我的
子表单中
我有一个
图表
控件:

<telerik:RadCartesianChart
    x:Name="chart" />
因此我注意到,在
InitializeComponent
方法之后,在
子表单
操作之后,代码进入我的
组合框
选择更改事件,我的
图表
控件仍然是
null
,并且尚未创建。
因此,我无法使用它,直到再次使用我的
组合框并再次更改选择(在本例中,我的
图表
非空)

如果窗口或
RadCartesianChart
尚未初始化或加载,您可以立即从事件处理程序返回:

private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (!this.IsLoaded || chart == null || !chart.IsLoaded)
        return; //do nothing

    //your code...
}

是的,但问题是,创建并打开此表单后,我希望在聊天中立即看到我的鼻烟,而不是再次更改组合框选择

在调用
InitializeComponent()
方法之后,以编程方式设置
SelectedIndex
属性,然后:

public partial class SubForm : Window
{
    public SubForm()
    {
        InitializeComponent();
        cbInterfaces.SelectedIndex = 0;
    }

    private void cbInterfaces_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        //...
    }
}



是,但问题是,创建并打开此表单后,我希望在聊天中立即看到我的鼻烟,而不是再次更改组合框选择,在我的主表单中,我有相同的控制器(组合框和聊天),并且在创建此表单后,我的图表不为空,为什么会有这种差异?在调用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"/>