【问题标题】:Application bar in windows phone 7windows phone 7 中的应用程序栏
【发布时间】:2011-07-01 23:11:13
【问题描述】:

我正在尝试在我的 windows phone 7 应用程序中创建一个应用程序栏。 但我认为点击事件存在一些问题,因为有时它起作用,有时它不起作用。

下面是xaml.cs中的代码。

xaml

    <shell:ApplicationBar IsVisible="True" IsMenuEnabled="False">
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.edit.rest.png" Text="Edit" Click="btnEdit_Click" IsEnabled="True"/>
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.delete.rest.png" Text="Delete" Click="btnDelete_Click" IsEnabled="True"/>
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.feature.email.rest.png" Text="Email"  Click="btnEmail_Click" IsEnabled="True"/>
        <shell:ApplicationBarIconButton IconUri="/Icons/appbar.back.rest.png" Text="Back" Click="btnBack_Click" IsEnabled="True"/>

    </shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

.cs

 void btnBack_Click(object sender, EventArgs e)

    {
        NavigationService.Navigate(new Uri("/Library.xaml", UriKind.Relative));
    }

    void btnDelete_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Can click");
    }

谁能帮帮我。谢谢。

【问题讨论】:

  • 您是否在该页面上调用任何启动器或选择器(如PhotoChooserTask)?
  • 不调用任何启动器或选择器

标签: windows-phone-7


【解决方案1】:

我能想到的一种可能情况是库页面有一个繁重的构造函数,因此导航到该页面需要很长时间。这种情况可能会产生一种错觉,即您点击按钮两次三次,并且您认为它不起作用,而第一个按钮已经被触发,但您的线程仍在考虑构建下一页。

尝试一个非常简单的消息框而不是导航,看看这个猜测是否属实。

如果是,则尝试使您的页面构造器尽可能轻,并在“Asynchronus”和“OnNavigatedTo”中加载数据。

对于数据加载: 您可能正在阅读要在库页面上加载的项目列表。加载项目需要从文件系统、Web 服务或任何其他耗时且可能阻塞 UI 的媒体中读取它们。您需要在 OnNavigatedTo 中执行此操作(以确保它在用户导航到页面后启动)并且像这样异步:

public override void OnNavigatedTo(...)
{
    System.Threading.ThreadPool.QueueUserWorkItem(LoadData);
}

void LoadData(object o)
{
    res = // load data from media.
    Deployment.Current.Dispatcher.BeginInvoke(() => 
    {
        // add res to your page
    });
}

您直接在页面后面的代码中编写的任何内容都将在 UI 线程上运行(由单独的线程处理的动画除外)。因此,您需要将与 UI 无关的任务保留在单独的线程中(如上所示)。

请注意,您仍然需要在 UI 线程中触发 UI 更改,否则您将收到“Corss-thread 异常”。 (这就是我们在 Dispatcher.BeginInvoke 中调用代码的原因)。

【讨论】:

  • 对不起,我的数据加载异步是什么意思??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多