93 messaggi dal 22 marzo 2012
Buon pomeriggio Lista

nel progetto che sto portando avanti ho creato in una form, in ambiente di XAML, una Grid:

        <Grid Name="grWFRow" Style="{StaticResource GridView}" Grid.Column="1" Grid.ColumnSpan="3" ShowGridLines="False" >
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="40"/>
                <ColumnDefinition Width="40"/>
                <ColumnDefinition Width="180"/>
                <ColumnDefinition Width="300"/>
                <ColumnDefinition Width="80"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="20"/>
            </Grid.RowDefinitions>
            <Label Style="{StaticResource LabelTestata}" Grid.Column="0" Content="Id"/>
            <Label Style="{StaticResource LabelTestata}" Grid.Column="1" Content="S"/>
            <Label Style="{StaticResource LabelTestata}" Grid.Column="2" Content="Descrizione"/>
            <Label Style="{StaticResource LabelTestata}" Grid.Column="3" Content="Inserimento"/>
            <Label Style="{StaticResource LabelTestata}" Grid.Column="4"/>
        </Grid>

e ho inserito al suo interno dei controlli a Runtime in questa maniera:

                            TextBox textBox_F = new TextBox();
                            textBox_F.Name = "TBox_File_" + wfr.WFRID.ToString();
                            textBox_F.Style = (Style)this.FindResource("TextBoxRow");

                            GridPosition(textBox_F, 3);

che vengono inseriti nella colonna e nella riga della Grid con la funzione GridPosition:

        private void GridPosition(object control, int column)
        {
            Grid.SetRow((UIElement)control, grWFRow.RowDefinitions.Count() - 1);
            Grid.SetColumn((UIElement)control, column);
            grWFRow.Children.Add((UIElement)control);
        }

Il Name assegnato é costruito in questa maniera TBox_File_01 (esempio) dove lo 01 è un progressivo inserito in una variabile

In un punto della procedura deve fare riferimento a questi controlli e devo utilizzare una variabile per richiamarli e pensavo di poter utilizzare questo codice



((TextBox)this.FindName("TextBox_File_" + Indice)).Name = "Prova"
(dove indice è una stringa con il numero progressivo della TextBox creata)




ma il risultato e un valore NULL e se provo (in debug) a fare riferimento al Control, nelle Espressioni di controllo scrivendo il nome in chiaro senza varibili, mi conferma che non ha nessun controllo con quel nome.

Vorrei capire se faccio un errore io nella dichiarazione del TextBox o che cosa sto sbagliando.

Aggiungo anche che io creo anche dei Bottom, con la stessa tecnica dei TextBox, ai quali ho collegato un evento Click che quando viene scatenato leggendo RoutedEventArgs il valore che trovo nel Name e quello che ho inserito io dinamicamene.

Sperando di essere stato utile e speranzoso in un vostro aiuto invio cordiali saluti

Perini Luca

Perini Luca
93 messaggi dal 22 marzo 2012
Buongiorno Lista
ho trovato, grazie ad un ex-collega che mi ha dato l'input, la soluzione per quanto riguarda il mio problema (ed era talmente semplice che mi prenderei a calci) e voglio condividerla con voi per chi dovesse nel futuro aver lo stesso problema.

            public FrameworkElement FindByName(string Name, Grid ParentGrid)
            {
                FrameworkElement resp = null;
                foreach (FrameworkElement tmpCTRL in ParentGrid.Children)
                {
                    if (tmpCTRL.Name == Name)
                    {
                        resp = tmpCTRL;
                    }
                    if (resp != null)
                    {
                        break;
                    }
                }
                return resp;
            }


Buon lavoro a tutti

Perini Luca

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.