【发布时间】:2013-01-11 10:13:12
【问题描述】:
多年来,我一直是一名 XAML 开发人员,但这个让我很难过。我一直睡不好所以可能是我太密集了。
刚刚使用 Windows 应用商店应用程序定位自己,我注意到 LayoutAwarePage 这些天有一个 DefaultViewModel,这很好,但我只在运行时设置它。确实,我们需要在设计时建立一个 DataContext 来查看真实的假数据。
因此,在使用一些更复杂的 ViewModel 连接代码失败后,我决定这样做并且它不起作用:
public sealed partial class TemplatePage : LayoutAwarePage
{
public TemplatePage()
: base()
{
this.DefaultViewModel = new ObservableDictionary<string, object>();
this.DefaultViewModel.Add("Name", "Design-time value.");
this.InitializeComponent();
}
...}
VS2012 和 Blend 根本看不到 DataContext。当我单击为 TextBlock 创建数据绑定时,Blend 报告
未设置数据上下文。勾选自定义后可以输入路径。
这在运行时有效,而且我复杂的聪明的东西也有效,但在设计器中无效。这一切的工作方式现在改变了吗?我错过了备忘录吗?
更新
因此使用 Channel9 上的教程中的指导
我现在至少能够包含更多不起作用的代码。
我创建了几个以扩展 BindableBase 的类形式的假数据源,与教程中的设置非常相似,但 XAML 方面很奇怪。
XAML 表示,在页面元素级别,构造一个 DesignTimeDataHub 对象并将其用作 DataContext。然后,在根 Grid 级别,使用将 DataContext 重置为 CommonFakeData 属性。
Grid 下 TextBlock 的 Blend Create Data Binding 对话框似乎认为 DataContext 是在 Page 级别设置的!
无论我使用{Binding CommonFakeData.Title} 还是{Binding Title} 都不起作用。
我显然把这一切都搞砸了。我很高兴他们让这变得更加困难,因为编写代码总是太容易了。
【问题讨论】:
-
您可以缩放浏览器以查看该图像。
标签: winrt-xaml windows-store-apps