将ContentControl放在自定义控件XAML中

时间:2012-07-07 17:16:04

标签: wpf xaml

我创建了一个自定义控件以及在该控件中使用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>

1 个答案:

答案 0 :(得分:1)

您的Ribbon控件需要一个RibbonTabItem类型的对象(因为它包含

ObservableCollection<RibbonTabItem> 

所以你只能添加RibbonTabItem类 - 你需要确保你的控件允许其中的其他元素。一些第三方控件通过在其自定义控件的内部项内提供内容控件(即让RibbonTabItem在其中包含ContentControl)或允许您自定义项模板

来解决此问题。

您需要更改Ribbon的实现或更改RibbonTabItem的功能才能使其正常工作。查看ItemsControl.Items属性并查看它是什么类型。您应该尝试将该类型用于ObservableCollection