C# 我能';无法从MainWindow类中的方法访问列表

C# 我能';无法从MainWindow类中的方法访问列表,c#,wpf,xaml,C#,Wpf,Xaml,我是C#新手,但我不明白为什么不能在主窗口类中访问我的列表 公共部分类主窗口:窗口 { 公共主窗口() { 初始化组件(); 列表均衡设置=新列表 { 新的均衡设置{LowerFrequencyBound=20,UpperFrequencyBound=250,分贝率变化=0}, 新的均衡设置{LowerFrequencyBound=250,UpperFrequencyBound=4000,分贝率变化=0} }; ItemsController.ItemsSource=均衡设置; } 私有void

我是C#新手,但我不明白为什么不能在主窗口类中访问我的列表

公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
列表均衡设置=新列表
{
新的均衡设置{LowerFrequencyBound=20,UpperFrequencyBound=250,分贝率变化=0},
新的均衡设置{LowerFrequencyBound=250,UpperFrequencyBound=4000,分贝率变化=0}
};
ItemsController.ItemsSource=均衡设置;
}
私有void AddFrequencyBoundButton_单击(对象发送方,路由目标)
{
添加(新的EqualationSetting();
}
}

它抛出“当前上下文SoundEditor中不存在名称'EqualizationSettings'。

这是因为您的变量位于MainWindow()方法内。请尝试以下操作:

public partial class MainWindow : Window
{
    List<EqualisationSetting> equalisationSettings;

    public MainWindow()
    {
        InitializeComponent();

        equalisationSettings = new List<EqualisationSetting>
        {
            new EqualisationSetting { LowerFrequencyBound = 20, UpperFrequencyBound = 250, DecibelRatioChange = 0 },
            new EqualisationSetting { LowerFrequencyBound = 250, UpperFrequencyBound = 4000, DecibelRatioChange = 0}
        };

        ItemsCountroller.ItemsSource = equalisationSettings;
    }

    private void AddFrequencyBoundButton_Click(object sender, RoutedEventArgs e)
    {
        equalisationSettings.add(new EqualisationSetting();
    }
}
公共部分类主窗口:窗口
{
列出均衡设置;
公共主窗口()
{
初始化组件();
均衡设置=新列表
{
新的均衡设置{LowerFrequencyBound=20,UpperFrequencyBound=250,分贝率变化=0},
新的均衡设置{LowerFrequencyBound=250,UpperFrequencyBound=4000,分贝率变化=0}
};
ItemsController.ItemsSource=均衡设置;
}
私有void AddFrequencyBoundButton_单击(对象发送方,路由目标)
{
添加(新的EqualationSetting();
}
}

这是因为您的变量在MainWindow()方法中。请尝试以下操作:

public partial class MainWindow : Window
{
    List<EqualisationSetting> equalisationSettings;

    public MainWindow()
    {
        InitializeComponent();

        equalisationSettings = new List<EqualisationSetting>
        {
            new EqualisationSetting { LowerFrequencyBound = 20, UpperFrequencyBound = 250, DecibelRatioChange = 0 },
            new EqualisationSetting { LowerFrequencyBound = 250, UpperFrequencyBound = 4000, DecibelRatioChange = 0}
        };

        ItemsCountroller.ItemsSource = equalisationSettings;
    }

    private void AddFrequencyBoundButton_Click(object sender, RoutedEventArgs e)
    {
        equalisationSettings.add(new EqualisationSetting();
    }
}
公共部分类主窗口:窗口
{
列出均衡设置;
公共主窗口()
{
初始化组件();
均衡设置=新列表
{
新的均衡设置{LowerFrequencyBound=20,UpperFrequencyBound=250,分贝率变化=0},
新的均衡设置{LowerFrequencyBound=250,UpperFrequencyBound=4000,分贝率变化=0}
};
ItemsController.ItemsSource=均衡设置;
}
私有void AddFrequencyBoundButton_单击(对象发送方,路由目标)
{
添加(新的EqualationSetting();
}
}

因为它包含在一个方法范围块中,所以将它移到
主窗口
方法之外以使用它。读取它,它将帮助您更好地理解变量的范围。因为它包含在一个方法范围块中,所以将它移到
主窗口
方法之外以使用它。给它一个阅读,它将帮助您更好地理解变量的范围。您可能会使用“field variable”一词,您很可能需要将其作为公共属性。抱歉,但这给了我一个NullReferenceException,为什么会这样?您可能会使用“field variable”一词,您很可能也需要将其作为公共属性。抱歉,但他给了我一个空引用异常,为什么?