【问题标题】:ApplicationBarIconButton is nullApplicationBarIconButton 为空
【发布时间】:2015-02-18 17:19:36
【问题描述】:

为什么我的 ApplicationBarIconButton 为空?

<phone:PhoneApplicationPage.ApplicationBar>
    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" x:Name="appBar">
        <shell:ApplicationBarIconButton x:Name="appbarSave"
          IconUri="/Icons/appbar.save.rest.png Text="Save" IsEnabled="False"
          Click="appbarSave_Click" />
    </shell:Application Bar>
</phone:PhoneApplicationPage.ApplicationBar>

appBarSave 对象为空,并尝试这样做:

Initialize Component();
appbarSave.IsEnabled = true;

导致 NullReferenceException。对象工作的唯一地方是点击事件(如果我启用它):

private void appbarSave_Click(object sender, EventArgs e)
{
    ApplicationBarIconButton button = (ApplicationBarIconButton)sender;
    button.IsEnabled = false;
}

我真的希望能够以禁用状态启动保存按钮并稍后启用它。

【问题讨论】:

    标签: windows-phone-7


    【解决方案1】:

    我记得之前遇到过这个问题:有一个解释here。一个简单的解决方法是在代码隐藏而不是 xaml 中实例化它(如 here)。

    private ApplicationBarIconButton SaveEdit;
    private void InitAppBar()
    {
         ApplicationBar appBar = new ApplicationBar();
    
         SaveEdit = new ApplicationBarIconButton(new Uri("images/appbar.check.rest.png", UriKind.Relative));
         SaveEdit.Click += new EventHandler(OnClick_Check);
         SaveEdit.Text = Strings.Save_button;
         appBar.Buttons.Add(SaveEdit);
    
         ApplicationBarIconButton CancelEdit = new ApplicationBarIconButton(new Uri("images/appbar.close.rest.png", UriKind.Relative));
         CancelEdit.Click += new EventHandler(OnClick_Cancel);
         CancelEdit.Text = Strings.Cancel_button;
         appBar.Buttons.Add(CancelEdit);
    
         ApplicationBar = appBar;
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      Microsoft.Phone.Shell.ApplicationBarIconButton btn = ApplicationBar.Buttons[0] as Microsoft.Phone.Shell.ApplicationBarIconButton;
      btn.IsEnabled = false;
      

      【讨论】:

      • 酷!这个有效!
      【解决方案3】:

      我用的是可绑定的应用栏控件from here文章底部有下载链接。

      让生活更轻松,让您不必将代码放在后面的代码中。

      【讨论】:

        【解决方案4】:

        我今天犯了这个错误,x:Name 被忽略了。

        ApplicationBar 已经是页面的一部分,无论您是否在 XAML 中创建它。没有必要创建一个新的。只需在文件后面的代码中使用 ApplicationBar 属性即可。

        Initialize Component();
        ApplicationBar.IsEnabled = true;
        

        【讨论】:

          【解决方案5】:

          我这样做,例如更改图标

          ApplicationBarIconButton btn =  (ApplicationBarIconButton)ApplicationBar.Buttons[0];
          btn.IconUri = new Uri("/images/play.png", UriKind.Relative);
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-08
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多