Erstellen DataTemplate und DataTrigger in den code

Ich versuche zu schaffen, DataTemplate im code-behind. Und ich habe ein problem mit DataTrigger in es.

Hier ist DataTemplate wie geschrieben in 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>

und hier ist das, was ich geschrieben habe in c#

var template = new DataTemplate();

//create visual tree
var textFactory = new FrameworkElementFactory(typeof(TextBox));
textFactory.SetBinding(TextBox.TextProperty, new Binding("Name"));
textFactory.SetValue(TextBox.NameProperty, "element");
textFactory.SetValue(TextBox.WidthProperty, 100D);
template.VisualTree = textFactory;

//create trigger
var animation = new DoubleAnimation();
animation.To = 200;
animation.Duration = TimeSpan.FromSeconds(2);
Storyboard.SetTargetProperty(animation, new PropertyPath("Width"));
Storyboard.SetTargetName(animation, "element");

var storyboard = new Storyboard();
storyboard.Children.Add(animation);

var action = new BeginStoryboard();
action.Storyboard = storyboard;

var trigger = new DataTrigger();
trigger.Binding = new Binding("Flag");
trigger.Value = true;
trigger.EnterActions.Add(action);

template.Triggers.Add(trigger);

Einen Satz dieser Daten als Vorlage ContentTemplate eine Schaltfläche. Taste ist-Daten gebunden, einfach Klasse, das ist kein problem.

Das problem ist, dass wenn ich die data-template erstellt, im code dann, wenn Flag Eigenschaft geändert hat, bekomme ich die folgende exception
'element' name cannot be found in the name scope of 'System.Windows.DataTemplate'. Während die Vorlage geschrieben, in xaml funktioniert perfekt.

Also, wo war ich nicht übersetzen von xaml-Code in c#?

InformationsquelleAutor alpha-mouse | 2011-06-09
Schreibe einen Kommentar