Créer DataGridTemplateColumn via le code C #

J'ai une dynamique de grille de données que j'ai créé. Je suis de la création de chaque colonne par le code derrière. Je vais avoir des ennuis sur une colonne que je veux être affichée à un textblock lorsqu'il n'est pas l'édition, mais comme une zone de liste déroulante lors de l'édition. J'ai une ObservableCollection de Transactions. Chaque Transaction a un type appelé "Compte". Voici ce que j'ai à ce jour:

    private DataGridTemplateColumn GetAccountColumn()
    {
        //Create The Column
        DataGridTemplateColumn accountColumn = new DataGridTemplateColumn();
        accountColumn.Header = "Account";

        Binding bind = new Binding("Account");
        bind.Mode = BindingMode.TwoWay;

        //Create the TextBlock
        FrameworkElementFactory textFactory = new FrameworkElementFactory(typeof(TextBlock));
        textFactory.SetBinding(TextBlock.TextProperty, bind);
        DataTemplate textTemplate = new DataTemplate();
        textTemplate.VisualTree = textFactory;

        //Create the ComboBox
        bind.Mode = BindingMode.OneWay;
        FrameworkElementFactory comboFactory = new FrameworkElementFactory(typeof(ComboBox));
        comboFactory.SetValue(ComboBox.DataContextProperty, this.Transactions);
        comboFactory.SetValue(ComboBox.IsTextSearchEnabledProperty, true);
        comboFactory.SetBinding(ComboBox.ItemsSourceProperty, bind);

        DataTemplate comboTemplate = new DataTemplate();
        comboTemplate.VisualTree = comboFactory;

        //Set the Templates to the Column
        accountColumn.CellTemplate = textTemplate;
        accountColumn.CellEditingTemplate = comboTemplate;

        return accountColumn;
    }

La valeur s'affiche dans le TextBlock. Toutefois, dans la zone de liste déroulante, je ne suis que l'obtention d'un caractère à afficher sur chaque élément. Pour exemple, voici le textblock:

Créer DataGridTemplateColumn via le code C #

Mais quand je clique sur modifier et aller dans la zone de liste déroulante, voici ce qui est indiqué:

Créer DataGridTemplateColumn via le code C #

Quelqu'un peut m'aider, afin que les éléments dans la zone de liste déroulante s'affichent correctement? Aussi, lorsque je sélectionne quelque chose à partir de la zone de liste déroulante, le textblock n'est pas mis à jour avec l'article que j'ai sélectionné.

Mise à JOUR:

Voici ma colonne à partir de maintenant. Les éléments dans la zone de liste déroulante sont affichés correctement. Le problème maintenant est que lorsqu'un nouvel élément est sélectionné, le texte dans le TextBlock n'est pas mis à jour avec le nouvel élément.

    private DataGridTemplateColumn GetAccountColumn()
    {
        //Create The Column
        DataGridTemplateColumn accountColumn = new DataGridTemplateColumn();
        accountColumn.Header = "Account";

        Binding bind = new Binding("Account");
        bind.Mode = BindingMode.OneWay;

        //Create the TextBlock
        FrameworkElementFactory textFactory = new FrameworkElementFactory(typeof(TextBlock));
        textFactory.SetBinding(TextBlock.TextProperty, bind);
        DataTemplate textTemplate = new DataTemplate();
        textTemplate.VisualTree = textFactory;

        //Create the ComboBox
        Binding comboBind = new Binding("Account");
        comboBind.Mode = BindingMode.OneWay;

        FrameworkElementFactory comboFactory = new FrameworkElementFactory(typeof(ComboBox));
        comboFactory.SetValue(ComboBox.IsTextSearchEnabledProperty, true);
        comboFactory.SetValue(ComboBox.ItemsSourceProperty, this.Accounts);
        comboFactory.SetBinding(ComboBox.SelectedItemProperty, comboBind);

        DataTemplate comboTemplate = new DataTemplate();
        comboTemplate.VisualTree = comboFactory;

        //Set the Templates to the Column
        accountColumn.CellTemplate = textTemplate;
        accountColumn.CellEditingTemplate = comboTemplate;

        return accountColumn;
    }

Les "Comptes" de la propriété est déclarée comme telle dans ma classe MainWindow:

public ObservableCollection<string> Accounts { get; set; }

    public MainWindow()
    {
        this.Types = new ObservableCollection<string>();
        this.Parents = new ObservableCollection<string>();
        this.Transactions = new ObservableCollection<Transaction>();
        this.Accounts = new ObservableCollection<string>();

        OpenDatabase();
        InitializeComponent();
    }

Voici ma Catégorie de Transactions:

public class Transaction
{
    private string date;
    private string number;
    private string account;

    public string Date
    {
        get { return date; }
        set { date = value; }
    }

    public string Number
    {
        get { return number; }
        set { number = value; }
    }

    public string Account
    {
        get { return account; }
        set { account = value; }
    }
}

source d'informationauteur Eric R.