我创建了一个自定义控件,以及使用该控件中的 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>
内容控件内部 ->
<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>
区控件需要 RibbonTabItem 类型的对象(因为它包含一个
ObservableCollection<RibbonTabItem>
因此,您只能向其添加 RibbonTabItem 类 - 您需要确保您的控件允许其中的其他元素。某些第三方控件通过在其自定义控件的内部项内提供内容控件(即让 RibbonTabItem 内部具有 ContentControl)或允许您自定义项模板来解决此问题
您需要更改功能区的实现或更改功能区选项卡项的功能才能正常工作。查看 ItemsControl.Items 属性,看看它是什么类型。您应该尝试将该类型用于可观察集合