DataTemplate
используется в ItemsControl
внутри UserControl
. Пользователь UserControl добавляется несколько раз внутри панели стека. (pfew)Как установить высоту сетки внутри DataTemplate
Мне нужно уметь определять, сколько детей имеет стековая панель. Я предположил, что это возможно с использованием режима 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>
Так что я в основном хотел бы знать, сколько элементы управления UserControl, которые были добавлены к StackPanel и быть в состоянии использовать эту amound детей, чтобы вычислить высоту сетки внутри DataTemplate.
Относительный источник FindAncestor дает мне сообщение о том, что дети не поддерживаются в относительном контексте.
Я мог бы неправильно понять ваш вопрос, но разве вы не можете просто подсчитать количество элементов в данных, связанных с коллекцией 'Matches'? – Sheridan
Я уверен, что все, что вы пытаетесь сделать, не нуждается в настройках высоты, как это, попробуйте использовать лучшую иерархию элементов управления, чтобы заставить ее работать. – Muds
Шеридан, я думаю, он хочет знать, что сделанный размер от нет. элементов в управлении – Muds