データバインドされたバージョン番号は、次のように表示されます。
<Window <!-- ... --> DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<TextBlock>
Version is:
<Run Text="{Binding Version, Mode=OneWay}"></Run>
and advancing...
</TextBlock>
</Grid>
</Window>
実行時に動作しています。
Visual Studio 2012のXAMLエディターでデザインタイムに表示するにはどうすればよいですか?私は見るだけ:
Version is: and advancing...
の代わりに:
Version is: 5.2.2 and advancing...
以下のJureの回答 は動作しますが、 ダミービューモデルの静的コードテクニック を使用することになりました。タイプ:
d:DataContext="{Binding Source={StaticResource DesignViewModel}}" ...
簡単に言えば、あなたはそのようにすることはできません。 VSデザイナーはランタイムコードを実行しておらず、バインディングはデザインタイムに解決されません。ただし、d:DesignData
拡張機能による設計時データのサポートがあります。
この方法で設計データコンテキストを設定できます。
<Window xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.Microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DataContext="{d:DesignData Source=/SampleData/SomeSampleData.xaml}"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<TextBlock>
Version is:
<Run Text="{Binding Version, Mode=OneWay}"></Run>
and advancing...
</TextBlock>
</Grid>
d:DataContext={d:DesignData....
は、VSデザイナーサーフェイスのバインディングを解決するために使用される設計時間DataContext
を設定します。サンプルデータを含むxamlファイルに設定できます。サンプルxamlファイルは、「DesignData」ビルドアクションでビルドする必要があります。
詳細はこちらをご覧ください: http://blogs.msdn.com/b/wpfsldesigner/archive/2010/06/30/sample-data-in-the-wpf-and-silverlight-designer.aspx
Xamlファイルのルートタグ(この場合はWindowタグ)にこれらの定義があることを確認してください。
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.Microsoft.com/expression/blend/2008"
mc:Ignorable="d"
次に、xamlのどこでも(ルートタグを含む)これを追加できます。
d:DataContext="{d:DesignInstance myNamespace:MyViewModel, IsDesignTimeCreatable=True}"
ここで、コンストラクタで値を初期化するか、プロパティのデフォルト値を設定する必要があります。
デザインモード用の特別なロジックを実行する必要がある場合は、 この回答 を参照してください。