2009-10-08 10 views
1

que je fais quelque chose comme ça dans un Silverlight 3 DataGrid:données Silverlight liant dans le code derrière

for (int x = 0; x < ThisForecast.Periods.Count; x++) 
{ 
    var TextColumn = new DataGridTextColumn(); 
    TextColumn.Header = ThisForecast.Periods[x].Name; 
    TextColumn.Binding = new Binding(String.Format("Periods[{0}].Quantity", x)); 
    TextColumn.Binding.Mode = BindingMode.TwoWay; 
    TextColumn.IsReadOnly = false; 
    dgItemForecast.Columns.Add(TextColumn); 
} 

Et cela fonctionne très bien, mais je veux changer le prêt que pour quelque chose comme: TextColumn. IsReadOnly = new Binding (String.Format ("Périodes [{0}]. IsReadOnly", x));

Et bien qu'il semble facile à faire en XAML, je ne peux pas trouver la bonne méthode pour faire cela dans le code derrière. Évidemment je ne peux pas le mettre sur une 'liaison', mais où pourrais-je mettre quelque chose comme ça?

EDIT # 1:

Je regardais les BindingOperations.SetBinding() ci-dessous, mais n'a pas pu trouver un DependencyProperty pour IsReadOnly. Y a-t-il un moyen d'injecter/d'en ajouter un?

Répondre

5
BindingOperations.SetBinding(textColumn, DataGridTextColumn.IsReadOnlyProperty, new Binding(...)); 
+0

C'est génial et corrige le problème de compréhension générale que j'ai, mais DataGridTextColumn n'a pas de propriété IsReadOnlyProperty. – JasonRShaver

+0

DataGridTextColumn possède une propriété IsReadOnly, héritée de DataGridColumn, mais les documents ne permettent pas de savoir si c'est une propriété de dépendance (et je n'ai pas les outils à portée de main pour la vérifier, pardon) - les documents ne mentionnent pas Champ IsReadOnlyProperty comme vous le feriez pour un DP. Si ce n'est pas un DP, il ne peut pas être lié à des données. Vous devrez peut-être utiliser un DataGridTemplateColumn à la place, et avec votre DataTemplate constitué d'un TextBox; vous pouvez ensuite lier le IsReadOnlyProperty de cette TextBox. – itowlson

+0

@itowlson pouvez-vous expliquer l'approche 'DataGridTemplateColumn'? comment accéder à la zone de texte à l'intérieur? comment définir la liaison dans le code? –

Questions connexes