将项目添加到Azure简易表时,未将UWP对象引用设置为对象的实例

时间:2017-10-25 11:05:30

标签: c# azure uwp

我有一个弹出窗口,它接收来自用户的输入,然后将其发送到模型,然后将其发送到azure easy table。当我构建项目时,一切运行正常,直到我点击提交按钮然后应用程序崩溃,我得到Null异常对象引用未设置为对象的实例。

输入XAML:

<Popup x:Name="ppup" IsOpen="False" IsLightDismissEnabled="True"  
 Width="320" HorizontalAlignment="Left">
        <Popup.ChildTransitions>
            <TransitionCollection>
                <!--<EdgeUIThemeTransition Edge="Left" />-->
                <PaneThemeTransition Edge="Left" />
            </TransitionCollection>
        </Popup.ChildTransitions>
        <Grid Width="380" Height="{Binding ElementName=flyoutPane, Path=Height}"  Background="{ThemeResource FlyoutBackgroundThemeBrush}" >
            <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,10,10,10" >
                <TextBlock Name="NameText" Text="Enter Name:"/>
                <TextBox  Name="NameBox" Width="200" Height="50"/>
                <TextBlock Name="SetsText" Text="Enter Sets:"/>
                <TextBox  Name="SetsBox" Width="200" Height="50"/>
                <TextBlock Name="TimeText" Text="Enter Time to complete:"/>
                <TextBox Name="TimeBox" Width="200" Height="50"/>
                <Button Name="SubmitBtn" Height="30" Width="100" Content="Submit" Click="SubmitBtn_Click"/>
            </StackPanel>
        </Grid>
    </Popup>

用于处理输入并将其传递给模型的C#:

CombatTableView ctv = new CombatTableView();

private async void SubmitBtn_Click(object sender, RoutedEventArgs e)
    {
        DrillItem drillItem = new DrillItem();
        String Name = NameBox.Text;
        int Sets = Int32.Parse(SetsBox.Text);
        int Time = Int32.Parse(TimeBox.Text);
        await ctv.combatDrillsTable.AddDrill(drillItem, Name, Sets, Time, parameters);
        ppup.IsOpen = false;
        var dialog = new MessageDialog("Your message here");
        await dialog.ShowAsync();
    }

查看型号:

 class CombatTableView
{
    public CombatDrillsTable combatDrillsTable { get; set; }

    public CombatTableView()
    {
        this.combatDrillsTable = new CombatDrillsTable();
    }
}

与数据库交互的模型:

public async Task AddDrill(DrillItem drillItem, String n, int s, int t, string sty)
    {
        drillItem.Name = n;
        drillItem.Sets = s;
        drillItem.SetTime = t;
        drillItem.Style = sty;

        await App.MobileService.GetTable<DrillItem>().InsertAsync(drillItem);
        drills.Add(drillItem);
    }

2 个答案:

答案 0 :(得分:2)

在我的情况下,问题是由于复选框意外绑定到事件而不是属性:

<CheckBox x:Name="chkIsActive" Checked="{Binding IsActive}" />

代替

<CheckBox x:Name="chkIsActive" IsChecked="{Binding IsActive}" />

答案 1 :(得分:0)

在combatDrillsTable中有一个空值,并且用于保存对象的列表也为null,因为我没有在该阶段将任何内容放入我的easy表中,因此它抛出了一个空异常。