Я только что прочитал учебник Microsoft Surface. Существует следующий пример C #:
private void OnCenterItems(object sender, RoutedEventArgs e)
{
var x = this.Photos.ActualWidth / 2;
var y = this.Photos.ActualHeight / 2;
FindChildren(this.Photos, d => d.GetType() == typeof(ScatterViewItem),
d => ((ScatterViewItem)d).Center = new Point(x,y));
}
private void FindChildren(DependencyObject source,
Predicate<DependencyObject> predicate,
Action<DependencyObject> itemFoundCallback)
{
int childCount = VisualTreeHelper.GetChildrenCount(source);
for (int i = 0; i < childCount; i++)
{
DependencyObject child = VisualTreeHelper.GetChild(source, i);
if (predicate(child))
{
itemFoundCallback(child);
}
FindChildren(child, predicate, itemFoundCallback);
}
}
Мне кажется, я более или менее понимаю, что делают эти два метода, но я никогда не видел такой вызов метода:
FindChildren(this.Photos, d => d.GetType() == typeof(ScatterViewItem),
d => ((ScatterViewItem)d).Center = new Point(x,y));
Это может быть потому, что я программист на Java. Так кто-нибудь может объяснить, что делает этот синтаксис?