0

はの内部DataTemplateで使用されます。UserControl は、stackpanel 内で複数回追加されます。(ちょっと)ItemsControlUserControl

stackpanel に含まれる子の数を特定できる必要があります。このモードを使えば可能FindAncestorだと思っていたのですが、残念ながらあなたの助けが必要です。

XAML ロジックは次のとおりです。

<StackPanel Name="BeforeTournament" Orientation="Horizontal" VerticalAlignment="Top">
    <UserControl ...
    <Grid>
        <TextBlock Name="txtTitle" FontSize="14" />
            <ItemsControl Name="MatchList" ItemsSource="{Binding Matches, Mode=OneWay}" Width="400" Margin="-7,20,0,0"
                  ScrollViewer.HorizontalScrollBarVisibility="Hidden"
                  ScrollViewer.VerticalScrollBarVisibility="Hidden">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid Name="MatchTemplate" Width="390"
                          Height="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackPanel}},
                                       Path=(Children.Count * 300}"
                          Margin="0,0,0,50" VerticalAlignment="Center">
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
    </UserControl>

    //Duplicates below, same logic to determine width
    <UserControl></UserControl>
</StackPanel>

したがって、基本的に、スタックパネルに追加された UserControls の数を知り、この量の子を使用して DataTemplate 内のグリッドの高さを計算できるようにしたいと考えています。

FindAncestor 相対ソースは、Children が相対コンテキストでサポートされていないというエラーを表示しています。

4

1 に答える 1