我的/Themes/Generic.xaml中有以下ControlTemplate:
<ControlTemplate x:Key="GroupList" TargetType="{x:Type Expander}">
<Expander IsExpanded="True">
<Expander.Header>
<Label Style="{DynamicResource headline3}" FontWeight="Light" BorderThickness="0 0 0 1">TEst group</Label>
</Expander.Header>
<ListBox x:Name="lstBoxContacts" Height="auto" BorderThickness="0" VerticalAlignment="Top" AllowDrop="True" PreviewDragOver="lstBoxContacts_PreviewDragOver" Drop="lstBoxContacts_Drop" ItemsSource="{Binding Contacts}">
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Fullname}" />
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ContextMenu>
<ContextMenu >
<MenuItem Header="Send Message" Command="local:CustomCommands.cmdMessageWrite"/>
<MenuItem Header="Show Details" Command="local:CustomCommands.cmdContactDetails"/>
<MenuItem Header="Delete" Command="local:CustomCommands.cmdContactDelete"/>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
</Expander>
</ControlTemplate>
这应该给我一个扩展器,里面有一个Listbox。我可以传递ObservableCollection<User>
对象,而不是显示(仅用户的Fullname属性)。
在我的MainWindow.xaml中,我有一个名为“stkpContactsAndGroups”的Stackpanel,我想以编程方式动态添加Expanders。
内容来自API调用(一切正常)。
从我所见,我应该使用Template.FindName。但是,当我提供可以找到所述模板的原点时,VS就是我。
Expander grp = (Expander)Template.FindName("GroupList", new Generic());
stkpContactsAndGroups.Children.Add(grp);
它无法将Generic()转换为FrameworkElement。我错过了这里的观点吗?
答案 0 :(得分:-1)
FrameworkTemplate.FindName方法可帮助您在模板中查找元素。在你的情况下,你最好使用Application.FindResource方法,创建新的Expander,使用Expander.Template
属性应用模板,然后将此扩展器添加到StackPanel.Children
集合