У меня есть макет XAML, похожее на это:Почему мои элементы управления XAML равны нулю?
<Grid>
<TextBox x:Name="inputTextBox" LostFocus="inputTextBox_LostFocus" TextChanged="inputTextBox_TextChanged" GotFocus="inputTextBox_GotFocus" />
<ComboBox x:Name="inputComboBox" SelectionChanged="inputComboBox_SelectionChanged">
<ComboBoxItem IsSelected="True">10</ComboBoxItem>
<ComboBoxItem>15</ComboBoxItem>
<ComboBoxItem>20</ComboBoxItem>
</ComboBox>
<ComboBox x:Name="inputComboBoxTwo" SelectionChanged="inputComboBoxTwo_SelectionChanged">
<ComboBoxItem IsSelected="True">1</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>3</ComboBoxItem>
</ComboBox>
</Grid>
Довольно простой. В файле C# codebehind я использую эти элементы управления, чтобы взять двойной из TextBox, еще несколько ints из ComboBoxes, затем создаю объект типа калькулятора с данными из элементов управления. Я делаю расчет и показываю результаты в некоторых других текстовых блоках.
namespace TipCalc
{
public sealed partial class MainPage : Page
{
Calc x = new Calc();
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
}
//
//Appropriate event handlers from XAML controls that all call the calculation method.
//
private void calcIt()
{
x.amt = double.Parse(inputTextBox.Text);
x.cal1 = int.Parse(inputComboBox.SelectedItem.ToString());
x.cal2 = int.Parse(inputComboBoxTwo.SelectedItem.ToString());
//Send calculated values to output TextBlocks.
}
}
}
Когда я запускаю эту программу, я ударил исключение нулевого указателя, возникающий при попытке доступа к текстовому свойству TextBox. Оказывается, все элементы управления XAML равны нулю. Однако для _contentLoaded установлено значение true и определение кода для this.IntializeComponent выглядит правильно за кулисами.
Почему все мои элементы управления имеют значение null, когда кажется, что все работает правильно? Есть ли способ инициализировать их вручную, если они не были правильно инициализированы автоматически? Я что-то делаю неправильно?
Я пробовал настроить Calc на всем протяжении места. Независимо от того, где создается Calc, мои элементы управления по-прежнему равны нулю. – avandyke
где ваш вызов Calc()? – Cologler
Calc ссылается только на метод calcIt(), который я изложил в своем первоначальном сообщении. Он никогда не используется нигде. Редактировать: Кроме того, объект Calc создается правильно со свойствами и значениями по умолчанию в каждом экземпляре, независимо от того, где он инициализируется кодом. Нулевой указатель конкретно ссылается на объект TextBox. – avandyke