Wpf 在代码中创建DataTemplate和DataTrigger
我正在尝试创建代码隐藏。我在这方面有点问题 以下是用xaml编写的数据模板: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">
<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";