多年来,我一直是一名 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 说,在 Page 元素级别,构造一个 DesignTimeDataHub 对象并将其用作 DataContext。然后,在根网格级别,使用将 DataContext 重置为 CommonFakeData 属性。
Grid 下 TextBlock 的 Blend Create Data Binding 对话框似乎认为 DataContext 是在页面级别设置的!
无论我使用{Binding CommonFakeData.Title}
还是{Binding Title}
不起作用。
我显然把这一切都搞砸了。我很高兴他们让这变得更加困难,因为编写代码总是太容易了。