私は、多数の DependencyProperties を持つ一連のコントロールに取り組んでいます。プロパティはそれ自体が DependencyObject であり、プロパティの get メソッドで作成されます。Get メソッドの間、これらは SetValue() メソッドを使用してプロパティバッグにも設定されるため、実際には Xaml で有効であり、それらのプロパティはビジュアル ツリーで明示的に作成しなくてもストーリーボードに入れることができます。
これらの DependencyObjects には、DataBinding をサポートするために、すべてのプロパティが DependencyProperties としても含まれています。上記のように、ストーリーボードで使用できます。
同時に、これらのプロパティに対する Blend 3 の特別なデザインタイム サポートを開発しており、コントロールの形式で InlineEditorTemplate を作成しました。テンプレートを作成し、次のように PropertyValueEditor に設定します。
var vectorEditControl = new FrameworkElementFactory(typeof (VectorEditorControl));
var dataTemplate = new DataTemplate {VisualTree = vectorEditControl};
InlineEditorTemplate = dataTemplate;
コントロールには次のものがあります。
<Grid DataContext="{Binding Value}">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Path=X, Mode=TwoWay}"/>
<TextBox Text="{Binding Path=Y, Mode=TwoWay}"/>
<TextBox Text="{Binding Path=Z, Mode=TwoWay}"/>
</StackPanel>
</Grid>
エディターが表示され、データを編集できます。デバッグ中も、データが DependencyObjects の DependencyProperties に実際に設定されていることがわかりますが、Xaml には何も起こりません。そのため、データは実際には Xaml に永続化されず、Xaml ファイルを閉じて再度開くと失われます。
実際に Xaml に入るために特に必要なことはありますか? 私はこれが自動的に起こるだろうという印象を受けましたか?