Freigeben über


DataTemplate.LoadContent Methode

Definition

public:
 virtual DependencyObject ^ LoadContent() = LoadContent;
DependencyObject LoadContent();
public DependencyObject LoadContent();
function loadContent()
Public Function LoadContent () As DependencyObject

Gibt zurück

Das STAMM-UIElement der DataTemplate.

Beispiele

Die folgenden Beispiele veranschaulichen die Verwendung der LoadContent-Methode, um die Darstellung eines Rahmens zur Laufzeit zu ändern. Im Beispiel wird eine ListView erstellt, die die Zahlen 1 bis 10 enthält. Wenn der Benutzer ein Element in listView auswählt, zeigt der Rahmen die ausgewählte Zahl an. Wenn der Benutzer eine gerade Zahl auswählt, ist die Zahl rot und hat einen grünen Kreis um sie herum. Wenn der Benutzer eine ungerade Zahl auswählt, ist die Zahl blau und hat ein violettes Quadrat um sie herum.

<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;
}

Hinweise

Wenn Sie LoadContent aufrufen, werden die UIElement-Objekte in dataTemplate erstellt, und Sie können sie der visuellen Struktur eines anderen UIElement hinzufügen.

Gilt für: