Questa documentazione è stata archiviata e non viene gestita.

Metodo FrameworkTemplate.FindName

Aggiornamento: novembre 2007

Trova l'elemento associato al nome specificato definito all'interno di questo modello.

Spazio dei nomi:  System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)

public Object FindName(
	string name,
	FrameworkElement templatedParent
)
public Object FindName(
	String name,
	FrameworkElement templatedParent
)
public function FindName(
	name : String, 
	templatedParent : FrameworkElement
) : Object
Non è possibile utilizzare metodi in XAML.

Parametri

name
Tipo: System.String

Nome della stringa.

templatedParent
Tipo: System.Windows.FrameworkElement

Contesto di FrameworkElement dove è applicato questo modello.

Valore restituito

Tipo: System.Object

Elemento associato al nome specificato.

Per ulteriori informazioni, vedere "Namescopes in Styles and Templates" in Ambiti dei nomi WPF.

In questo esempio viene illustrata la procedura per la ricerca di elementi generati da un oggetto DataTemplate.

Nell'esempio, è presente un oggetto ListBox associato ad alcuni dati XML:

<ListBox Name="myListBox" ItemTemplate="{StaticResource myDataTemplate}"
         IsSynchronizedWithCurrentItem="True">
  <ListBox.ItemsSource>
    <Binding Source="{StaticResource InventoryData}" XPath="Books/Book"/>
  </ListBox.ItemsSource>
</ListBox>


ListBox utilizza il seguente oggetto DataTemplate:

<DataTemplate x:Key="myDataTemplate">
  <TextBlock Name="textBlock" FontSize="14" Foreground="Blue">
    <TextBlock.Text>
      <Binding XPath="Title"/>
    </TextBlock.Text>
  </TextBlock>
</DataTemplate>


Per recuperare l'elemento TextBlock generato dall'oggetto DataTemplate di un determinato oggetto ListBoxItem, è necessario ottenere l'oggetto ListBoxItem, trovare ContentPresenter all'interno dello stesso oggetto ListBoxItem e chiamare FindName sull'oggetto DataTemplate impostato su tale ContentPresenter. Nell'esempio riportato di seguito viene illustrata la modalità di esecuzione di questa procedura. Viene creata, a scopo dimostrativo, una finestra di messaggio in cui è visualizzato il contenuto di testo del blocco di testo generato da DataTemplate.

// Getting the currently selected ListBoxItem
// Note that the ListBox must have
// IsSynchronizedWithCurrentItem set to True for this to work
ListBoxItem myListBoxItem =
    (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromItem(myListBox.Items.CurrentItem));

// Getting the ContentPresenter of myListBoxItem
ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);

// Finding textBlock from the DataTemplate that is set on that ContentPresenter
DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
TextBlock myTextBlock = (TextBlock)myDataTemplate.FindName("textBlock", myContentPresenter);

// Do something to the DataTemplate-generated TextBlock
MessageBox.Show("The text of the TextBlock of the selected list item: "
    + myTextBlock.Text);


Di seguito viene mostrata l'implementazione di FindVisualChild, che utilizza i metodi VisualTreeHelper:

private childItem FindVisualChild<childItem>(DependencyObject obj)
    where childItem : DependencyObject
{
    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
    {
        DependencyObject child = VisualTreeHelper.GetChild(obj, i);
        if (child != null && child is childItem)
            return (childItem)child;
        else
        {
            childItem childOfChild = FindVisualChild<childItem>(child);
            if (childOfChild != null)
                return childOfChild;
        }
    }
    return null;
}


Per l'esempio completo, vedere Esempio di ricerca di elementi generati da un modello.

Altro codice

Procedura: trovare elementi generati da un oggetto ControlTemplateIn questo esempio viene illustrata la procedura per la ricerca di elementi generati da un oggetto ControlTemplate.

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0
Mostra: