コード例 #1
0
        T findComponentFromTemplate <T>(Fotografia f, string nomeComponente)
        {
            // Per ricavare il componente desiderato, devo fare diversi passaggi

            // 2. dalla foto ricavo il ListBoxItem che la contiene
            ContentPresenter contentPresenter;
            var test = itemsControl.ItemContainerGenerator.ContainerFromItem(f);

            if (test is ContentControl)
            {
                // 3. dal ListBoxItem ricavo il suo ContentPresenter
                ContentControl listBoxItem = (ContentControl)test;
                contentPresenter = AiutanteUI.FindVisualChild <ContentPresenter>(listBoxItem);
            }
            else
            {
                // IL componente è già avvolto direttamente nel presenter
                contentPresenter = (ContentPresenter)test;
            }

            // 4. con il ContentPresenter ricavo il DataTemplate (del singolo elemento)
            DataTemplate dataTemplate = contentPresenter.ContentTemplate;

            // 5. con il DataTemplate ricavo l'Image contenuta

            return((T)dataTemplate.FindName(nomeComponente, contentPresenter));
        }
コード例 #2
0
        private void mostraAreaStampabileButton_Click(object sender, RoutedEventArgs e)
        {
            ContentPresenter myContentPresenter = AiutanteUI.FindVisualChild <ContentPresenter>(LsImageGallery);

            // ListBoxItem co = (ListBoxItem)LsImageGallery.ItemContainerGenerator.ContainerFromIndex( 0 );

            iteraAlberoFigli(myContentPresenter);
            // iteraAlberoVisibili();
        }
コード例 #3
0
        void iteraAlberoFigli(FrameworkElement ele)
        {
            int quanti = VisualTreeHelper.GetChildrenCount(ele);

            for (int i = 0; i < quanti; i++)
            {
                var child = VisualTreeHelper.GetChild(ele, i) as FrameworkElement;
                if (child.Name == "fotoCanvas")
                {
                    // Per far prima, invece che applicarlo a tutti, la applico soltanto ai componenti visibili
                    if (AiutanteUI.IsUserVisible(ele, LsImageGallery))
                    {
                        Canvas canvas = (Canvas)child;

                        // prima controllo che non ce l'ho già messo
                        if (AiutanteUI.FindVisualChild <Border>(canvas, "borderCopriA") == null)
                        {
                            Border borderA = new Border();
                            borderA.Name = "borderCopriA";
                            borderA.HorizontalAlignment = HorizontalAlignment.Left;
                            borderA.VerticalAlignment   = VerticalAlignment.Top;
                            borderA.Style = (Style)FindResource("styleBorderCopriA");
                            canvas.Children.Add(borderA);
                            borderA.SetValue(Canvas.ZIndexProperty, 99);
                        }

                        if (AiutanteUI.FindVisualChild <Border>(canvas, "borderCopriB") == null)
                        {
                            Border borderB = new Border();
                            borderB.Name = "borderCopriB";
                            borderB.HorizontalAlignment = HorizontalAlignment.Left;
                            borderB.VerticalAlignment   = VerticalAlignment.Top;
                            borderB.Style = (Style)FindResource("styleBorderCopriB");
                            canvas.Children.Add(borderB);
                            borderB.SetValue(Canvas.ZIndexProperty, 99);
                        }
                    }
                }
                else
                {
                    iteraAlberoFigli(child);
                }
            }
        }