为什么不能在样式中设置数据模板,但可以在控件模板中设置数据模板?



为什么这不起作用:

 <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添加为内容或项目,都将自动应用该数据模板。

相关内容

  • 没有找到相关文章

最新更新