WP8 linq-to-sql绑定问题上的LongListSelector

我正在构建我的第一个WP8应用程序,通过linq-to-sql连接到数据库,我想在LongListSelector中显示数据。 但是在Emulator中启动后没有任何东西出现在黑屏上。

请问哪里弄错了? 我用WCF连接

这是MainPage.xaml.cs

using PhoneApp1.Resources; using PhoneApp1.ToursServiceReference1; namespace PhoneApp1 { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); // Sample code to localize the ApplicationBar //BuildLocalizedApplicationBar(); } private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { ToursServiceReference1.ToursService1Client serviceClient = new ToursServiceReference1.ToursService1Client(); serviceClient.GetAllKlientsCompleted += new EventHandler(serviceClient_GetAllKlientsCompleted); serviceClient.GetAllKlientsAsync(); } private void serviceClient_GetAllKlientsCompleted(object sender, ToursServiceReference1.GetAllKlientsCompletedEventArgs e) { if (e.Result != null) { LLS.ItemsSource = e.Result; } } 

Ť

这是MainPage.xaml

                                              <!---->  

很抱歉提供大型代码,但到目前为止我不知道错误可能是我发布的完整代码。

谢谢大家的时间。

编辑 :Woops,对不起,我没有看到你正在使用WCF,因为我认为WebAPI在这里会好的(关于你的问题到web api并在这里引用你的问题)。 但也许您不需要坚持使用WCF并可以使用其他技术?

Marek,请再次查看https://stackoverflow.com/a/18271995/959687 ,了解基础知识。 我正在编写以下代码,因此可能需要在之后进行改进。 但它会告诉你它是如何基本完成的。

我将向您展示如何使用Web服务中的项填充LongListSelector。

首先,我们需要我们的数据传输对象(DTO):

 [JsonObject] public class ListDTO { [JsonProperty] public IEnumerable Items { get; set; } } 

然后你需要一个控制器:

 public class ListController : ApiController { [HttpGet] public ListDTO Get() { return new ListDTO() { Items = new List() { "Item 1", "Item 2", }, }; } } 

然后,您需要从应用中的服务中检索这些项目:

 private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { LoadFromWebservice(); } private async void LoadFromWebservice() { HttpClient client = new HttpClient(); client.BaseAddress = new Uri("http://thewebservice.tld/"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); await client.GetStreamAsync("api/list/get") .ContinueWith(result => { var stream = result.Result; var serializer = new JsonSerializer(); // this is json.net serializer using (var streamReader = new StreamReader(stream)) { using (var jsonReader = new JsonTextReader(streamReader)) { var theList = serializer.Deserialize(jsonReader); Dispatcher.BeginInvoke(() => LLS.ItemsSource = theList.Items.ToList()); } } }); } 

您现在可以使用数据库中的ling-to-sql在控制器中检索项目。 无论你想要什么,随意做。 🙂

但要注意:我不建议这样做,因为它太多地耦合到您的用户界面。 此示例显示了从Web服务获取数据的基本知识。

我建议你看一下MVVM模式( http://en.wikipedia.org/wiki/Model_View_ViewModel ),构建一个viewmodel并将你的视图绑定到那个viewmodel。 一种方法是使用MVVM灯: http : //mvvmlight.codeplex.com/

附加信息

  • 如果您想在本地计算机上进行测试,请查看此处: http : //msdn.microsoft.com/en-us/library/windowsphone/develop/jj684580%28v=vs.105%29.aspx
  • 要使用httpclient,您需要从NuGet安装该软件包
  • 要部署解决方案,以便每个人都可以访问它,您需要一个运行.NET 4.5的网站空间,创建一个部署包( http://msdn.microsoft.com/en-us/library/dd465323.aspx )并上传它到你的服务器
  • 要访问MS SQL数据库,可以使用ling-to-sql,entity framework或.NET支持的任何其他内容。