将一个ContentControl放置在一个自定义控件中XAML

问题描述:

我创建了一个自定义控件以及如何使用该控件中的ContentControl来使用MVVM设计模式,但是当我运行该应用程序时,我的控件不喜欢这样。为了测试,我还尝试了其他标准控件,但是它们都不在自定义控件内工作......更多依赖于父自定义控件的自定义控件。将一个ContentControl放置在一个自定义控件中XAML

有没有人建议如何将标准控件如ContentControl放在自定义控件中?

干杯。

EDIT

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中内部 - >

<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

你能告诉我们你到目前为止? – 2012-07-07 17:27:52

+0

添加上面的语法。 – bl4kh4k 2012-07-07 17:32:47

你的Ribbon控件预计RibbonTabItem类型的对象(因为它设有一个

ObservableCollection<RibbonTabItem> 

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

您需要更改Ribbon的实现或更改RibbonTabItem的功能才能使其工作。看看ItemsControl.Items属性,看看是什么类型。你应该尝试使用这种类型的ObservableCollection

+0

你能提供一个快速的模型示例吗?我目前有一个属性公开了创建RibbonTabItem的新集合的ObservableCollection 。是否有可能将集合转换为此类属性中的ContentControl? – bl4kh4k 2012-07-07 19:53:10

+0

当前RibbonTabItem有一个BorderPart类型的声明TemplatePart ...如果我切换出BorderControl for ContentControl,那就足够了吗? – bl4kh4k 2012-07-07 20:12:40

+0

是的,可能会工作,试试看,如果它确实 – Charleh 2012-07-07 22:32:42