У меня есть пользовательский элемент управления PianoScore , и он имеет WrapPanel
для отображения многих баров. Например, вот партитура с 8 тактами.
<ScrollViewer VerticalScrollBarVisibility="Auto">
<WrapPanel Name="WrapPanel_Bars" Orientation="Horizontal" >
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
<local:BarRenderer></local:BarRenderer>
</WrapPanel>
</ScrollViewer>
И дело в том, что всякий раз, когда WrapPanel_Bars
изменяется, мне нужно добавить скрипичный ключ и Басовый ключ для каждого первого элемента линии в строке.
Я ищу несколько методов обратного вызова, например:
private void WrapPanel_Bars_SizeChanged(object sender, SizeChangedEventArgs e)
{
var renderers[] = /* How can I get every first BarRenderer of WrapPanel??? */
foreach (var renderer in renderers)
{
// Set renderer's clefs
renderer.UpClef = Clefs.Treble;
renderer.DownClef = Clefs.Bass;
}
}
Ожидаемый результат:
Сортировка BarRenderers
по 3
Сортировка BarRenderers
по 2
Я ценю любую вашу помощь. Спасибо.