为什么这不起作用:
<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
。它不是一个控件。
你似乎不知道你在做什么,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
添加为内容或项目,都将自动应用该数据模板。