XAML에서 DataTemplate 참조 자체를 만들 수있는 방법이 있습니까? 이 특별한 경우에 동일한 DataTemplate 내에 포함 된 ListBox에서 DataTemplate을 참조하려고합니다. 여기에 제가 원했던 해결책이 있는데, 그것은 효과가 없습니다.ListBox에 중첩 된 DataTemplates
<DataTemplate x:Key="nestedItem" DataType="{x:Type local:NestedItem}">
<Expander Header="{Binding Path=Name}">
<ListBox ItemsSource="{Binding Path=Items}" x:Name="itemsList"
ItemTemplate="{StaticResource nestedItem}"/>
</Expander>
</DataTemplate>
그리고 현재 제가 현재 사용하고있는 해결책이 있습니다. 당신이 대신 정적 리소스의 DynamicResource 될 당신의 내면의 참조를 변경하면 당신이 원하는대로
private void OnItemExpanded(object sender, RoutedEventArgs e)
{
if (e.OriginalSource != sender) return;
var source = (Expander) sender;
ListBox listBox = source.FindName("itemsList") as ListBox;
NestedItem item = source.DataContext as NestedItem;
listBox.ItemsSource = item.Items;
listBox.ItemTemplate = (DataTemplate) FindResource("nestedItem");
}
일부 미친 이유 때문에 DynamicResource를 테스트하지도 않았지만 실수는하지 않았습니다. 개체 유형에 따라 템플릿을 변경하는 컬렉션의 일부 항목에 대해 DataTemplateSelector가 이미 있습니다 (일반 컬렉션). 감사! –