我有名为 EditorView 的 UserControl,它根据其内容显示不同的“编辑器”(其他用户控件)。
这是 EditorView 只是为了测试我用 TextBlock 替换 FontEditor 的绑定:
<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 以来,我有什么特别需要做的吗?也许不同的命名空间是问题所在?