我有這個翻轉視圖:<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 關注
- 861 瀏覽
添加回答
舉報
0/150
提交
取消
