共享大小组到不同父控件中的不同网格

本文关键字:控件 网格 共享 | 更新日期: 2023-09-27 18:26:06

所以,我有3个用户控件:

1. 第五节

<UserControl x:Class="NumberedMusicalScoresWriter.V.SectionV"...>
...
    <Grid Background="{Binding BackgroundColor, Mode=OneWay}" Grid.IsSharedSizeScope="True">
        ...
        <V:BarV Grid.Column="0" Grid.Row="0" DataContext="{Binding GClefBarVM, Mode=OneWay}"/>
        <V:BarV Grid.Column="0" Grid.Row="2" DataContext="{Binding FClefBarVM, Mode=OneWay}"/>
    </Grid>
...

2. BarV.xaml

<UserControl x:Class="NumberedMusicalScoresWriter.V.BarV"...>
...
    <Grid Background="{Binding BackgroundColor, Mode=OneWay}">
        ...
        <ItemsControl Grid.Column="0" Grid.Row="0"
                      ItemsSource="{Binding NotationGroupVMs, Mode=OneWay}">
            ...
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <V:NotationGroupV/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
...

3. 符号组V.xaml

<UserControl x:Class="NumberedMusicalScoresWriter.V.NotationGroupV"...>
...
    <Grid Background="{Binding BackgroundColor, Mode=OneWay}">
        ...
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto" SharedSizeGroup="Mid"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        ...
    </Grid>
...

如您所见,NotationGroupVBarV UserControl的集合,而BarVSectionV作为两个拥有。(SectionV也用作其父控件的集合成员(

问题出在 NotationGroupV 的中心行高度上,它有 SharedSizeGroup="Mid" 。我想在应用程序中将其分享给其他NotationGroupV

所以,基本上,我想与不同父母的其他NotationGroupV分享SharedSizeGroup

有人知道如何以这种方式暴露SharedSizeGroup吗?

(请问什么澄清(

谢谢。

附言在此链接中,介绍了如何在不同的网格中共享它们,但在同一 xaml 中。

共享大小组到不同父控件中的不同网格

虽然我不能确定您的要求是否有效,但我可以确认,只要您将 Grid.IsSharedSizeScope 附加属性设置为True您为其设置SharedSizeGroup的两个Grid的父容器控件,那么它应该可以工作。要确定答案,请尝试一下...您可能自己测试它的速度可能比您写这个问题所花费的时间更快。

如果目前没有父容器控件,只需添加一个....(把所有东西都放进去(。这里要注意的重要一点是,您只应该将Grid.IsSharedSizeScope设置为True单个父容器控件,而不是在每个Grid上。