gpt4 book ai didi

c# - 如何在 wpf 中的 ItemsPanelTemplate 中找到控件?

转载 作者:行者123 更新时间:2023-11-30 12:35:52 24 4
gpt4 key购买 nike

当 ItemsControl 被 ItemsSource 绑定(bind)时,我正在尝试访问 DataTemplate 内的 Grid。

这是完整的 XMAL 代码,我如何从外部找到某个元素?

for (int i = 0; i < allViewControl.Items.Count; i++)
{
var container = allViewControl.ItemContainerGenerator.ContainerFromItem(allViewControl.Items[i]) as FrameworkElement;
var grid = allViewControl.ItemTemplate.FindName("grid", container) as DataGrid;
}

我发现它总是返回 null ?

<ScrollViewer Grid.Row="0" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto">
<ItemsControl x:Name="allViewControl" Focusable="False" HorizontalContentAlignment="Center"
Grid.IsSharedSizeScope="true" ItemsSource="{Binding AllClassCharacters}"
ItemTemplate="{StaticResource CharacterViewModelTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Extensions:AnimatedWrapPanel IsItemsHost="true" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>



<DataTemplate x:Key="CharacterViewModelTemplate" DataType="{x:Type ViewModel:CharacterViewModel}">
<Grid x:Name="grid" Width="200" Height="Auto" MinHeight="115" Margin="1" MinWidth="130" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" RenderTransformOrigin="0.5,0.5" Background="#66000000" >
<Grid.RowDefinitions>
<RowDefinition Height="70"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ProgressBar x:Name="playerProgressBar" VerticalAlignment="Top" Background="Transparent" Height="5" Width="Auto" Value="0" Visibility="Collapsed" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan ="2" Grid.RowSpan="2" Foreground="White" BorderThickness="0" Style="{DynamicResource ProgressBarStyle1}" />
</Grid>

最佳答案

简短的回答是您不需要这样做 - 使用 MVVM 应该可以为您提供更简单的解决方案,无论您想要实现什么。

如果您需要它用于设置焦点等特殊情况,请在 so 上搜索“查找控件 wpf”- 有一些现有问题 (example) 可以破解并从 WPF UI 树中获取控件

关于c# - 如何在 wpf 中的 ItemsPanelTemplate 中找到控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4544490/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com