In ASP.NET, so findet man sich das Schreiben von Code oft wie:Iterieren ein Silverlight Datagrid
foreach(DataListItem item in theDataList.Items){
MyUserControl foo = item.FindControl("myUserControl") as MyUserControl;
foo.DoSomethingNice();
}
In Silverlight, wie kann man die konstituierenden Steuerelemente eines Datagrid durchlaufen (oder andere Steuer Sammlung gebunden ist)? Ich möchte die Deckkraft für jedes zu etwas wie 0,5 und dann, wie sie verarbeitet werden die Deckkraft auf 1 zu aktualisieren.
Mit der ItemSource-Eigenschaft kann man einen Verweis auf die zugrunde liegende IEnumerable, die gebunden ist, erhalten, aber ich würde wie die eigentliche Kontrollreferenz.
Um diesen zu konkretisieren, vorausgesetzt, dass Sie ein Benutzersteuer wie diese:
<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>
Ihre Datagrid-Vorlage wie folgt aussieht:
<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>
Du bist wie diese Bindung:
theDataGrid.AutoGenerateColumns = false;
people = new List<Person>(
new Person[]{
new Person { FirstName = "John", LastName = "Carmack" },
new Person { FirstName = "Linus", LastName = "Torvalds" }
}
);
theDataGrid.ItemsSource = people;