コンテンツに基づいてさまざまな「エディター」(他のユーザーコントロール)を表示するEditorViewというUserControlがあります。
これは、FontEditorをTextBlockに置き換えたバインディングをテストするためのEditorViewです。
<UserControl x:Class="TrikeEditor.UserInterface.EditorView" ...>
<UserControl.Resources>
<DataTemplate DataType="{x:Type te_texture:Texture}">
<teuied:TextureEditor TextureName="{Binding Path=Name}"/>
</DataTemplate>
<DataTemplate DataType="{x:Type te_font:Font}">
<!--<teuied:FontEditor/>-->
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</UserControl.Resources>
<UserControl.Template>
<ControlTemplate TargetType="{x:Type UserControl}">
<ContentPresenter Content="{TemplateBinding Content}" x:Name="EditorPresenter"/>
</ControlTemplate>
</UserControl.Template>
</UserControl>
正しいテンプレートはEditorView.Contentに基づいて選択され、TextBlockの場合はバインディングは希望どおりに機能しますが、TextureEditorの場合はTextureNameプロパティは機能しません。
TextureEditorのスニペットは次のとおりです。
public partial class TextureEditor : UserControl
{
public static readonly DependencyProperty TextureNameProperty = DependencyProperty.Register("TextureName", typeof(string), typeof(TextureEditor));
public string TextureName
{
get { return (string)GetValue(TextureNameProperty); }
set { SetValue(TextureNameProperty, value); }
}
public TextureEditor()
{
InitializeComponent();
}
}
UserControlを使用しているので、何か特別なことはありますか?たぶん、異なる名前空間であることが問題ですか?