I have a user control PianoScore and it has WrapPanel
in order to display many bars. For example, here is a piano score with 8 bars.
<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>
And the thing is, whenever the WrapPanel_Bars
gets resized, I need to add a Treble Clef and Bass Clef to every first bar element of the line.
I'm looking for some callback methods for example:
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;
}
}
Expected result:
I appreciate any kind of your help. Thanks.
Get 'sender as WrapPanel' in the handler method and iterate its Children property while casting each child to BarRenderer.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.