我创建了一个自定义控件以及在该控件中使用ContentControl以使用MVVM设计模式的内容,但是当我运行应用程序时,我的控件不喜欢这样。为了进行测试,我还尝试了其他标准控件,但它们都不在自定义控件中工作......只是更多依赖于父自定义控件的自定义控件。
有人建议如何在自定义控件中放置标准控件(如ContentControl)吗?
干杯。
修改
XamlParseException - > '为类型集合添加值 'System.Collections.ObjectModel.ObservableCollection(Ribbon_Framework.RibbonTabItem)' 抛出一个例外。'行号'8'和行位置'14'。
<Ribbon:Ribbon AutomaticStateManagement="True" x:Name="Ribbon">
<ContentControl x:Name="SearchRibbon" Content="{Binding Path=SearchRibbon}" ContentTemplate="{DynamicResource SearchRibbonTemplate}" />
</Ribbon:Ribbon>
在contentcontrol内部 - &gt;
<DataTemplate x:Key="SearchRibbonTemplate">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ribbon:RibbonTabItem Header="Search">
<Ribbon:RibbonGroupBox Header="{Binding Path=DisplayName}" Width="100">
<Ribbon:Button Width="100" Icon="{Binding Path=TemplateResource}" LargeIcon="{Binding Path=TemplateResource}" Command="{Binding Path=Commands}" />
</Ribbon:RibbonGroupBox>
</Ribbon:RibbonTabItem>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
答案 0 :(得分:1)
您的Ribbon控件需要一个RibbonTabItem类型的对象(因为它包含
)ObservableCollection<RibbonTabItem>
所以你只能添加RibbonTabItem类 - 你需要确保你的控件允许其中的其他元素。一些第三方控件通过在其自定义控件的内部项内提供内容控件(即让RibbonTabItem在其中包含ContentControl)或允许您自定义项模板
来解决此问题。您需要更改Ribbon的实现或更改RibbonTabItem的功能才能使其正常工作。查看ItemsControl.Items属性并查看它是什么类型。您应该尝试将该类型用于ObservableCollection