Wpf 在代码中创建DataTemplate和DataTrigger

Wpf 在代码中创建DataTemplate和DataTrigger,wpf,datatemplate,code-behind,datatrigger,Wpf,Datatemplate,Code Behind,Datatrigger,我正在尝试创建代码隐藏。我在这方面有点问题 以下是用xaml编写的数据模板: <DataTemplate x:Key="XamlTemplate" > <TextBox Text="{Binding Name}" Name="element" Width="100"/> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Flag}" Value="true">

我正在尝试创建代码隐藏。我在这方面有点问题

以下是用xaml编写的数据模板:

<DataTemplate x:Key="XamlTemplate" >
    <TextBox Text="{Binding Name}" Name="element" Width="100"/>
    <DataTemplate.Triggers>
        <DataTrigger Binding="{Binding Flag}" Value="true">
            <DataTrigger.EnterActions>
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="element" Storyboard.TargetProperty="Width"
                                            To="200" Duration="0:0:2" />
                    </Storyboard>
                </BeginStoryboard>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </DataTemplate.Triggers>
</DataTemplate>
A将此数据模板设置为一个按钮。按钮是绑定到简单类的数据,这不是问题

问题是,当我使用在代码中创建的数据模板时,当
标志
属性更改时,我会得到以下异常
在“System.Windows.DataTemplate”的名称范围中找不到“element”名称
。而用xaml编写的模板可以完美地工作


那么,我在哪里没能将xaml翻译成c?

元素的
名称
有点特殊(例如,请参见备注)

你想挂断电话吗

textFactory.SetValue(TextBox.NameProperty, "element");
并改为设置
FrameworkElementFactory.Name

textFactory.Name = "element";
这是因为,如果属性是在创建后设置的(这就是您所做的),那么它将不再以相同的方式注册

从代码中设置名称很重要的一个值得注意的情况是,注册脚本将运行的元素的名称,以便在运行时引用这些元素。在注册名称之前,可能还需要实例化和分配实例。请参见示例部分,或

textFactory.Name = "element";