WPF ComboBox ne pas mettre à jour la source

Je vais essayer d'obtenir un WPF zone de liste déroulante de travail (à l'intérieur de la WPFToolkit Datagrid), et j'ai de la difficulté d'obtenir tous les morceaux correctement aligné. Je suis à l'aide de Linq to entities, et je suis le réglage de l'ensemble du datacontext les résultats d'une requête Linq:


private void LoadDonationGrid()
{
    donationGrid.ItemsSource = from donations in entities.Donation
                   .Include("Family")
                   .Include("PledgeYear")
                   .Include("DonationPurpose")
               from donationPurposes in entities.DonationPurpose
               select new { donations, donationPurposes };
}

J'ai aussi une page bien dans mon code-behind qui fournit le ItemsSource de la zone de liste déroulante:


private IEnumerable donationPurposeList;
public IEnumerable DonationPurposeList
{
    get
    {
        if (donationPurposeList == null)
        {
            donationPurposeList = from dp in entities.DonationPurpose
                                  select dp;
        }
        return donationPurposeList.ToList();
    }
}

Le XAML de la zone de liste déroulante ressemble à ceci:

<tk:DataGridTemplateColumn Header="Purpose">
    <tk:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=donations.DonationPurpose.Description, Mode=TwoWay}" />
        </DataTemplate>
    </tk:DataGridTemplateColumn.CellTemplate>
    <tk:DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox Name="cboDonationPurpose"
                SelectedValue="{Binding Path=donations.DonationPurposeID, Mode=TwoWay}"
                ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type Page},Mode=FindAncestor},Path=DonationPurposeList}"                                 
                DisplayMemberPath="Description"
                SelectedValuePath="DonationPurposeID"
                      />
        </DataTemplate>
    </tk:DataGridTemplateColumn.CellEditingTemplate>
</tk:DataGridTemplateColumn>

Et tout semble fonctionner correctement, c'est à dire, les valeurs correspondantes sont affichées dans la zone de liste déroulante, jusqu'au moment où la mise au point des feuilles de la zone de liste déroulante. À ce stade, l'affichage de la valeur renvoie à la valeur d'origine, pas de la nouvelle valeur sélectionnée. J'ai essayé d'utiliser SelectedItem au lieu de SelectedValue, mais qui se termine avec la valeur sélectionnée apparaît pas dans la zone de liste déroulante. Je suis un peu perplexe: il semble que ce bit doit être au travail.

Édité 3/2/09: je suis toujours perplexe sur cette. Je note que dans mon datagrid, toute simple colonnes de données (par exemple, "DataGridTextColumn") mise à jour le sous-jacent de la source de données comme vous le souhaitez. Mais toute mise à jour de mon basées sur des modèles de colonnes ("DataGridTemplateColumn") ou zone de liste déroulante colonnes ("DataGridComboBoxColumn") ne fonctionnent pas: le sous-jacent de la source de données n'est jamais mis à jour. Sûrement d'autres gens ont essayé d'utiliser le WPF.Trousse datagrid et obtenu que ce scénario fonctionne, mais j'ai regardé tous les exemples de code, et je fais essentiellement, ce qu'il a dit de le faire (dans les limites de ma solution), je suis donc à me gratter la tête pourquoi cela ne fonctionne pas.

Toutes les pensées?

source d'informationauteur Ken Smith