在wpf中创建两个ComboboxItems函数时,对象引用未设置为对象的实例

在wpf中创建两个ComboboxItems函数时,对象引用未设置为对象的实例,wpf,combobox,nullreferenceexception,Wpf,Combobox,Nullreferenceexception,我这里没有什么主意了 问题是,我使用两个组合框,我想从两个组合框中获取值,以在wpf中显示DataGrid中的内容 我有一个从两个组合框中获取值的函数。这很有效 private void cboxYearChange(object sender, SelectionChangedEventArgs e) { ComboBoxItem typeItemYear = (ComboBoxItem)comboBox2.SelectedItem; string va

我这里没有什么主意了

问题是,我使用两个组合框,我想从两个组合框中获取值,以在wpf中显示DataGrid中的内容

我有一个从两个组合框中获取值的函数。这很有效

private void cboxYearChange(object sender, SelectionChangedEventArgs e)
    {
        ComboBoxItem typeItemYear = (ComboBoxItem)comboBox2.SelectedItem;
        string valueYear = typeItemYear.Content.ToString();

        ComboBoxItem typeItemMonth = (ComboBoxItem)comboBox1.SelectedItem;
        string valueMonth = typeItemMonth.Content.ToString();
}
但是我想创建另一个函数来检查其他组合框上的更改:

private void cboxMonthChange(object sender, SelectionChangedEventArgs e)
    {
        ComboBoxItem typeItemYear = (ComboBoxItem)comboBox2.SelectedItem;
        string valueYear = typeItemYear.Content.ToString();

        ComboBoxItem typeItemMonth = (ComboBoxItem)comboBox1.SelectedItem;
        string valueMonth = typeItemMonth.Content.ToString();

} 
我可以构建,但当我运行此命令时,我得到的对象引用没有设置为ComboBoxItem typeItemYear=(ComboBoxItem)comboBox2.SelectedItem上对象错误的实例;cboxMonthChange函数中的行


我在这里遗漏了什么?

SelectedItem在选择某些内容之前为空。除非它们同时更改(这是不可能的,因为这些事件是按顺序触发的),否则comboBox1.SelectedItem或comboBox2.SelectedItem上的类型转换将引发异常

检查SelectedItem是否设置为方法。 或者使用其他类型,如:

ComboboxItem1=comboBox1.SelectedItem作为ComboxItem; if(item1!=null) { //做点什么 }

希望这有帮助:-)

1)只要有可能,您不应该在代码中引用控件的名称。
例如,您可以知道SelectionChanged中更改了哪个组合框 通过将
发送方
强制转换为
组合框

2) 但在这种简单的情况下,只需使用公共属性并将它们绑定到 您的组合框:无需代码即可完成所有操作

<ComboBox x:Name="YearSelectCB" SelectedItem="{Binding SelectedYear}">
<ComboBox x:Name="MonthSelectCB" SelectedItem="{Binding SelectedMonth}">

(您可以通过多种方式设置窗口的DataContext,例如在
窗口加载的事件处理程序(DataContext=this))

很抱歉缺少代码格式。菜单在我的手机上不可见:-)后面的选项不起作用。检查SelectedItem是否设置了方法是什么意思?