2012-07-07 84 views
0

我創建了一個自定義控件以及如何使用該控件中的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

回答

1

你的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

相關問題