0

カスタム コントロールを作成し、MVVM デザイン パターンを使用するためにそのコントロール内で ContentControl を使用するものを作成しましたが、アプリケーションを実行すると、コントロールが気に入りません。テストのために、他の標準コントロールも試しましたが、どれもカスタム コントロール内では機能しませんでした。親カスタム コントロールに依存するカスタム コントロールが増えただけです。

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>
4

1 に答える 1

1

リボン コントロールは、RibbonTabItem タイプのオブジェクトを想定しています (

ObservableCollection<RibbonTabItem> 

そのため、RibbonTabItem クラスのみを追加できます。コントロールがその内部の他の要素を許可していることを確認する必要があります。一部のサード パーティ コントロールは、カスタム コントロールの内側の項目内にコンテンツ コントロールを提供する (つまり、RibbonTabItem に ContentControl を内部に持たせる) か、項目テンプレートをカスタマイズできるようにすることで、これを回避します。

これを機能させるには、リボンの実装を変更するか、RibbonTabItem の機能を変更する必要があります。ItemsControl.Items プロパティを見て、そのタイプを確認します。ObservableCollection にそのタイプを使用してみてください

于 2012-07-07T17:55:26.083 に答える