Dans ASP.NET, on se retrouve souvent à écrire du code comme:Itère un DataGrid Silverlight
foreach(DataListItem item in theDataList.Items){
MyUserControl foo = item.FindControl("myUserControl") as MyUserControl;
foo.DoSomethingNice();
}
Dans Silverlight, comment peut-on itérer à travers les contrôles constitutifs d'un DataGrid (ou toute autre collection contrôle lié)? Je voudrais définir l'opacité pour chacun à quelque chose comme 0.5 et puis comme ils sont traités mettre à jour l'opacité à 1.
En utilisant la propriété ItemSource on peut obtenir une référence à l'IEnumerable sous-jacent qui est lié, mais je voudrais comme la référence de contrôle réelle.
Pour rendre cela plus concret, supposons que vous avez un contrôle utilisateur comme ceci:
<UserControl x:Class="GridTest.TestControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="Auto" Height="25">
<StackPanel Orientation="Horizontal">
<TextBox Width="150" Text="{Binding FirstName}" />
<TextBox Width="150" Text="{Binding LastName}" />
</StackPanel>
</UserControl>
Votre modèle DataGrid ressemble:
<data:DataGrid x:Name="theDataGrid">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="People" Width="Auto">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<this:TestControl />
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
Vous lier comme ceci:
theDataGrid.AutoGenerateColumns = false;
people = new List<Person>(
new Person[]{
new Person { FirstName = "John", LastName = "Carmack" },
new Person { FirstName = "Linus", LastName = "Torvalds" }
}
);
theDataGrid.ItemsSource = people;