DataTemplate.LoadContent Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Membuat objek UIElement di DataTemplate.
public:
virtual DependencyObject ^ LoadContent() = LoadContent;
DependencyObject LoadContent();
public DependencyObject LoadContent();
function loadContent()
Public Function LoadContent () As DependencyObject
Mengembalikan
UIElement akar DataTemplate.
Contoh
Contoh berikut menunjukkan menggunakan metode LoadContent untuk mengubah tampilan Batas pada durasi. Contoh membuat ListView yang berisi angka 1 hingga 10. Saat pengguna memilih item di ListView, Batas menampilkan nomor yang dipilih. Jika pengguna memilih angka genap, angka berwarna merah dan memiliki lingkaran hijau di sekitarnya. Jika pengguna memilih angka ganjil, angka berwarna biru dan memiliki persegi ungu di sekitarnya.
<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;
}
Keterangan
Saat Anda memanggil LoadContent, objek UIElement di DataTemplate dibuat, dan Anda dapat menambahkannya ke pohon visual UIElement lain.
Berlaku untuk
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk