用DataTemplate
在 aItemsControl
里面UserControl
。UserControl 在堆栈面板中被多次添加。(很少)
我需要能够确定堆栈面板有多少个孩子。我认为使用该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>
所以我基本上想知道有多少用户控件被添加到堆栈面板中,并且能够使用这个数量的孩子来计算 DataTemplate 内网格的高度。
FindAncestor 相对来源给我一个错误,说相对上下文不支持儿童。