为什么这不起作用:
<Style TargetType="s:Substance">
<Setter Property="Template">
<Setter.Value>
<DataTemplate>
<StackPanel>
<TextBlock Text="{TemplateBinding Name}"/>
<TextBox Text="{TemplateBinding Count}"/>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
如果切换到ControlTemplate
它可以正常工作,但我需要一个数据模板。另外,如果我将Template
替换为DataTemplate
,则无法识别该属性。有谁知道发生了什么?谢谢。
注意:物质来自FrameworkElement
。它不是一种控制。
答案 0 :(得分:4)
您似乎不知道自己在做什么,Template
期望ControlTemplate
,此属性设置控件本身的模板,而不是其数据。
您的Substance
控件是否还有任何需要DataTemplate
的属性?例如ContentTemplate
(如果是ContentControl
)或ItemTemplate
(如果是ItemsControl
)?
编辑:您可能只想这样做:
<Some.Resources>
<DataTemplate DataType="{x:Type s:Substance}"> <!-- The use of x:Type is important! -->
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<TextBox Text="{Binding Count}"/>
</StackPanel>
</DataTemplate>
</Some.Resources>
为Substance
定义数据模板;无论Substance
被添加为内容或项目,都会自动应用该数据模板。