私は何年もの間 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 の [Create Data Binding] をクリックすると、Blend レポート
データ コンテキストが設定されていません。カスタムにチェックを入れると、パスを入力できます。
これは実行時に機能し、複雑なスマートなお尻も機能しますが、デザイナーでは機能しません。これがすべて機能する方法は今変わりましたか?? 私はメモを逃しましたか?
アップデート
したがって、Channel9 のチュートリアルのガイダンスを使用して
少なくとも、機能しないコードをさらに含めることができるようになりました。
BindableBase を拡張するクラスの形でいくつかの偽のデータ ソースを作成しました。これは、チュートリアルでこの設定が行われているのと同じですが、XAML 側が奇妙です。
XAML は、Page 要素レベルで、DesignTimeDataHub オブジェクトを構築し、これを DataContext として使用すると述べています。次に、ルート グリッド レベルで、DataContext を CommonFakeData プロパティにリセットします。
Grid の下の TextBlock の Blend Create Data Binding ダイアログは、DataContext がページ レベルで設定されているものであると考えているようです。
使うか使わ{Binding CommonFakeData.Title}
ないか{Binding Title}
。
私は明らかにこれをすべて台無しにしています。コードを書くのはいつも簡単すぎるので、彼らがこれを難しくしてくれてうれしいです。