我有这个翻转视图:<FlipView x:Name="models_list" SelectionChanged="selectionChanged"> <FlipView.ItemTemplate> <DataTemplate> <Grid x:Name="cv"> <Image x:Name="img1" Source = "{Binding ModelImage}" Stretch="Fill" Tag="{Binding ModelTag}"/> </Grid> </DataTemplate> </FlipView.ItemTemplate>我想找到当前选定索引的img1。在搜索它时,我在这里的一些帖子中找到了此方法:private DependencyObject FindChildControl<T>(DependencyObject control, string ctrlName) { int childNumber = VisualTreeHelper.GetChildrenCount(control); for (int i = 0; i < childNumber; i++) { DependencyObject child = VisualTreeHelper.GetChild(control, i); FrameworkElement fe = child as FrameworkElement; // Not a framework element or is null if (fe == null) return null; if (child is T && fe.Name== ctrlName) { // Found the control so return return child; } else { // Not found it - search children DependencyObject nextLevel = FindChildControl<T>(child, ctrlName); if (nextLevel != null) return nextLevel; } } return null; }它向我返回了flipview的第一个索引上的Image,但我需要当前选择的索引上存在的图像。我尝试编辑此方法,但找不到所需的控件。谁能帮我?
3 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
获取对DataTemplate中元素的简单解决方案是将DataTemplate的内容包装在UserControl中,在其中您可以访问ItemsControl项中的所有UI元素。我认为FlipView通常会将其项目虚拟化,因此即使您绑定了100个项目-UI中实际上只有2-3个可能具有当前表示形式(其中1-2个处于隐藏状态),因此您必须记住当您想要替换任何内容,仅在将项目加载到控件中时才进行更改。
如果确实需要标识代表ItemsSource中项目的项目容器,则可以检查FlipView的ItemContainerGenerator属性及其ContainerFromItem()方法。
要获取项目的坐标,可以使用GetBoundingRect()WinRT XAML Toolkit中的扩展方法。
总体而言,根据您的评论,最好的方法实际上可能完全不同。如果将FlipView绑定到源,通常可以通过更改绑定的源集合项的属性来控制显示或覆盖的图像。
- 3 回答
- 0 关注
- 809 浏览
添加回答
举报
0/150
提交
取消