2016-04-04 19 views
1

私はライブラリプロジェクトでWPFコントロールを作成し、新しいものでWPFコントロールを拡張したいと考えています。WPFユーザーコントロールの継承の問題

<UserControl x:Class="Genesyslab.Desktop.Modules.ExtensionUtils85.GUI.EmbeddingUserControl" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"> 
    <Grid> 

    </Grid> 
</UserControl> 

私はこのようにそれを拡張しようとしている:しかし、私は名前を「EmbeddingUserControlは、」名前空間「Genesyslab.Desktop.Modules.ExtensionUtils85に存在しないというエラーメッセージが表示されます

<src:EmbeddingUserControl x:Class="Interaxalab.Desktop.Modules.PrototipoCable.CustomViews.InteractionView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:src="Genesyslab.Desktop.Modules.ExtensionUtils85.GUI" 
    Name="InteractionWorksheetView" Height="321.613" Width="471.396" 
> 
    <Grid> 

     <WindowsFormsHost x:Name="windowsFormsHost1" HorizontalAlignment="Left" Height="284" VerticalAlignment="Top" Width="471"/> 

    </Grid> 
</src:EmbeddingUserControl> 

.GUI "

xaml.csがそれを見つけることができるので、その名前ははっきりと存在しますが、何らかの理由でxamlが認識できないということは明らかです。

ご協力いただければ幸いです。

答えて

0

短いストーリー - xamlを使って別のコントロールでコントロールを継承することはできません(それは意味がありますか?)。

public class EmbeddingUserControl : UserControl { 
    // some methods, properties of your control 
} 

その後、あなたはすでにあなたの質問に(継承することを忘れないでくださいない正確のように継承することができます:あなたのケースでは、EmbeddingUserControlはあなただけで行うことができますので、任意のビジュアルツリーエレメント(ちょうど空のグリッド)が含まれていませんEmbeddingUserControl から、とxamlファイルとコードビハインドファイル)。

継承されたコントロールにxaml自体がない場合(つまり、ロジックをオーバーライドできるように)、xamlでユーザーコントロールから継承することもできます。

いくつかの視覚的な構造を継承する必要がある場合は、継承から合成に切り替える必要があります。つまり、ベースコントロールには、他のコントロールを配置できるプレースホルダが用意されています。たとえば、ItemsControlやItemTemplateプロパティなど、データアイテムをフォーマットするためのテンプレートを提供することもできます。次に、必要に応じて、これらのプレースホルダに他のコントロールを入力します。