はの内部DataTemplate
で使用されます。UserControl は、stackpanel 内で複数回追加されます。(ちょっと)ItemsControl
UserControl
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 が相対コンテキストでサポートされていないというエラーを表示しています。