【问题标题】:WP7 Silverlight: Data binding with the same XAML at design & runtimeWP7 Silverlight:在设计和运行时使用相同的 XAML 进行数据绑定
【发布时间】:2011-08-01 13:35:44
【问题描述】:

我想在我的 WP7 应用程序的设计和运行时使用相同的数据。 XAML 的相关部分如下所示:

<phone:PhoneApplicationPage ...
  d:DataContext="{d:DesignData Source=data.xaml}"
  DataContext="{Binding Source=???}"

这样我可以在设计时查看数据。有没有办法在运行时使用相同的数据?

【问题讨论】:

  • 郑重声明,如果您使用相同的静态数据源,则没有理由使用 DesignTime DataContext。
  • 好吧,那就说明我太笨了,不能这么做。我可以在线找到的所有示例都绑定到对象实例或数据库。如何直接绑定到 XAML?

标签: xaml silverlight windows-phone-7 data-binding


【解决方案1】:

不知道 d:DataContext 的存在。我敢说:

<phone:PhoneApplicationPage ...
d:DataContext="{d:DesignData Source=data.xaml}"
DataContext="{Binding Source=data.xaml}"

--- 添加编辑 -------------------

嗯...到处检查发现,正如预期的那样,“DesignData”与“Binding”不同(我误读了这个,抱歉)。 “DesignData”能够在设计时实例化一个基于 xml 文件的对象,这在运行时没有影响。我们尝试构建的 Binding 永远不会起作用,因为它的目的是使用已经实例化的对象。

当您为全景应用程序运行默认模板时,它会实例化自己的数据(检查 MainViewModel.cs 的代码)...这就是为什么它显示的内容与 xml 文件中的不同。您所要做的就是手动打开“LoadData”方法中的 xml 并加载文件数据,以便在运行时和设计时显示相同的数据。

【讨论】:

  • 那是我的第一次尝试。但它不起作用。不知道为什么,用户界面只是空白。部分问题可能是,为了让 d:DataContext 工作,文件 data.xaml 必须使用“DesignData”作为构建操作。
  • 嗯......不得不说我用一个具有简单属性的单个类进行了测试......在我的情况下,属性的顺序无关紧要。我可以看看你的 data.xaml 文件来测试一下吗?
  • 它来自 Visual Studio 2010 中的“Windows Phone Panorama Application”模板(WP7 SDK 的 Beta2 更新)。我将此行添加到 MainPage.xaml DataContext="{Binding Source=SampleData/MainViewModelSampleData.xaml}" 并删除了构造函数和 MainPage_Loaded 中的数据上下文更改代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 2011-07-15
  • 2012-02-11
  • 2012-08-06
  • 1970-01-01
相关资源
最近更新 更多