DataTemplate.LoadContent 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在DataTemplate中建立UIElement物件。
public:
virtual DependencyObject ^ LoadContent() = LoadContent;
DependencyObject LoadContent();
public DependencyObject LoadContent();
function loadContent()
Public Function LoadContent () As DependencyObject
傳回
範例
下列範例示範如何使用 LoadContent 方法來變更 執行時間的 Border 外觀。 此範例會建立 ListView ,其中包含數位 1 到 10。 當使用者在 ListView中選取專案時, Border 會顯示選取的數位。 如果使用者選取偶數,數位會是紅色,且周圍有綠色圓圈。 如果使用者選取奇數,則數位為藍色,且周圍有紫色方塊。
<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;
}
備註
當您呼叫 LoadContent 時,會建立 DataTemplate中的UIElement物件,並將它們新增至另一個UIElement的視覺化樹狀結構。