DataTemplate.LoadContent Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea gli oggetti UIElement in DataTemplate.
public:
virtual DependencyObject ^ LoadContent() = LoadContent;
DependencyObject LoadContent();
public DependencyObject LoadContent();
function loadContent()
Public Function LoadContent () As DependencyObject
Restituisce
UIElement radice di DataTemplate.
Esempio
Negli esempi seguenti viene illustrato l'uso del metodo LoadContent per modificare l'aspetto di un oggetto Border in fase di esecuzione. Nell'esempio viene creato un controllo ListView contenente i numeri da 1 a 10. Quando l'utente seleziona un elemento in ListView, il bordo visualizza il numero selezionato. Se l'utente seleziona un numero pari, il numero è rosso e ha un cerchio verde intorno a esso. Se l'utente seleziona un numero dispari, il numero è blu e ha un quadrato viola intorno a esso.
<StackPanel x:Name="rootStackPanel">
<StackPanel.Resources>
<DataTemplate x:Key="oddNumberTemplate">
<Grid>
<Rectangle Stroke="Purple" StrokeThickness="4"/>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="24" Foreground="Blue"
FontWeight="Bold"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="evenNumberTemplate">
<Grid>
<Ellipse Stroke="Green" StrokeThickness="4"/>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="24" Foreground="Red"
FontWeight="Bold" />
</Grid>
</DataTemplate>
</StackPanel.Resources>
<ListView x:Name="numberList"
SelectionChanged="ListView_SelectionChanged"
HorizontalAlignment="Center">
<ListViewItem Content="1"/>
<ListViewItem Content="2"/>
<ListViewItem Content="3"/>
<ListViewItem Content="4"/>
<ListViewItem Content="5"/>
<ListViewItem Content="6"/>
<ListViewItem Content="7"/>
<ListViewItem Content="8"/>
<ListViewItem Content="9"/>
<ListViewItem Content="10"/>
</ListView>
<Border x:Name="selectedItemDisplay"
Width="50" Height="50"/>
</StackPanel>
private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListViewItem lvi = ((sender as ListView).SelectedItem as ListViewItem);
SelectDataTemplate(lvi.Content);
}
private void SelectDataTemplate(object value)
{
string numberStr = value as string;
if (numberStr != null)
{
int num;
try
{
num = Convert.ToInt32(numberStr);
}
catch
{
return;
}
DataTemplate template;
// Select one of the DataTemplate objects, based on the
// value of the selected item in the ListView.
if (num % 2 != 0)
{
template = rootStackPanel.Resources["oddNumberTemplate"] as DataTemplate;
}
else
{
template = rootStackPanel.Resources["evenNumberTemplate"] as DataTemplate;
}
selectedItemDisplay.Child = template.LoadContent() as UIElement;
TextBlock tb = FindVisualChild<TextBlock>(selectedItemDisplay);
tb.Text = numberStr;
}
}
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;
}
Commenti
Quando chiami LoadContent, gli oggetti UIElement in DataTemplate vengono creati ed è possibile aggiungerli all'albero visivo di un altro UIElement.