DataTemplate.LoadContent Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria os objetos UIElement no DataTemplate.
public:
virtual DependencyObject ^ LoadContent() = LoadContent;
DependencyObject LoadContent();
public DependencyObject LoadContent();
function loadContent()
Public Function LoadContent () As DependencyObject
Retornos
O UIElement raiz do DataTemplate.
Exemplos
Os exemplos a seguir demonstram o uso do método LoadContent para alterar a aparência de uma Borda em tempo de execução. O exemplo cria um ListView que contém os números de 1 a 10. Quando o usuário seleciona um item no ListView, a Borda exibe o número selecionado. Se o usuário selecionar um número par, o número será vermelho e terá um círculo verde ao redor dele. Se o usuário selecionar um número ímpar, o número será azul e terá um quadrado roxo ao redor dele.
<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;
}
Comentários
Quando você chama LoadContent, os objetos UIElement no DataTemplate são criados e você pode adicioná-los à árvore visual de outro UIElement.