2017-08-16 5 views
0

WPFアプリケーション(VB.net)では、2つの他のユーザーコントロールが継承するベースユーザーコントロールを作成しようとしています。いくつかのユーザーコントロールのスーパークラスを実装する方法

これは私が今まで持っているものです。

私の基本クラス:

PUblic MustInherit Class BaseUserControl 
    Inherits UserControl 
    Implements INotifyPropertyChanged 

    'common properties 
    'common methods 

End Class 

私の継承ユーザーコントロール、.xaml.vbファイル:

PUblic Class myUserControlOne 
    Inherits BaseUserControl 

    Public Sub New() 
     InitializeComponent() 
    End Sub 
End Class 

マイ継承された使用コントロール、.xamlファイル:

<local:BaseUserControl x:Class="myUserControlOne" 
    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" 
    xmlns:local="clr-namespace:TestProject" 
    mc:Ignorable="d" 
    d:DesignHeight="300" 
    d:DesignWidth="300"> 


    <Grid> 
    </Grid> 

</local:BaseUserControl> 

私はしかし、私はまだエラーが出るなどthisthisthisthis、同様に、スタックオーバーフローの上にいくつかの記事や質問を見ていると、私のエラーのルートがある場合、私は得ることはありません。

これは私が現在持っているエラーです:名前 "BaseUserControl"は名前空間 "clr-namespace:TestProject"に存在しません。

私はWPFとVB.netの方が新しく、何か助けていただければ幸いです。

+0

のUserControlから延長されていますWPFアプリケーションプロジェクトで定義されたBaseUserControlクラス、またはいくつかの異なるプロジェクトがありますか?また、とは何ですか? – mm8

+0

すべてが1つのプロジェクトに含まれています。そして、それは問題のタイプミスでした、それを指摘してくれてありがとう;) – Yvonnila

+0

そしてあなたはプロジェクトを作ることができませんか? – mm8

答えて

-1

このようなものはありますか?

基底クラス

public class BaseClass : uielement 
    { 
     static BaseClass() 
     { 
      DefaultStyleKeyProperty.OverrideMetadata(
       typeof(BaseClass), new FrameworkPropertyMetadata(typeof(Baseclass))); 
     } 

childClass

public class ChildClass : BaseClass 
    { 
     static ChildClass() 
     { 
      DefaultStyleKeyProperty.OverrideMetadata(
       typeof(ChildClass), new FrameworkPropertyMetadata(typeof(ChildClass))); 
     } 

あなたの子供のクラスでdefaultstylekeypropertyを上書きしない場合、彼らは親のスタイルを使用します。

通常のコンストラクタをそこに定義するだけで、静的コンストラクタが常に最初に自動的に呼び出され、通常のコンストラクタが呼び出されます。

その後、どこかにこのようなあなたのスタイルを定義します。

<Style TargetType="{x:Type test:BaseClass}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="test:BaseClass"> 
        <Path Data="M-5,-3 -5,2 l10, 10 l-10,10 v5" Fill="LightBlue"/> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

を私はかつて同じ問題を抱えていた、 EDIT:VB.netを逃し、VB.netで代わりのUIElement

+0

理由を言わずにダウンボトムをしないでください – Lloyd

+1

私はダウンワードをしませんでした、とにかく、あなたの返信に感謝します。しかし、私は私の質問で望んでいたものとの関係を見ません。 – Yvonnila

+0

心配しないでください、私はあなたがしなかったことを知っています。それは公のスコアを変更していないだろう。 エラーに対する解決策が必要な場合は、インテリジェンスエラーでした。非常に一般的です。あなたはx86にリビルドしてx64に戻って再構築することができ、それも修正されました。 この例では、 'SomeBaseControl'は、usercontrolの継承を動作させるときにXAMLエラーを使用して定義されたため、XAMLファイルのルートにすることはできません。 usercontrolsを継承する別の方法が見つかった場合でもそれは問題ありません。 – Lloyd

関連する問題