質問: WPFでカスタムコントロールを作ろうと調べましたがどこも情報が少なくわからない状態です。 サイトの内容等から手探りで作りましたが、どうしてもそのカスタムコントロールがおかしい?のです。 例えばTextBoxをベースにして適当にデザイナで配置&実行しTextBoxを編集しようとすると本来現れるはずのキャレットが出ずに入力ができません。 十中八九やり方がおかしいのですがどこがおかしいのかわらず途方に暮れております。 以下カスタムコントロールを作成した時の手順です。 1.プロジェクトから新しい項目の追加>WPFでカスタムコントロールを作成 2.カスタムコントロールのクラスの継承元をControlからTextBoxに変更。 3.Generic.xamlで以下のように再編集。 ``` 元々カスタムコントロールは上記手順を踏まず、普通に.csファイル単体を作成して記述していました。 その場合は普通に入力編集などできていたのでそれでよいのかと思いましたがこの方法は間違っているのでしょうか? ご教示お願いいたします。 また、どこかわかりやすいサイトなどありましたらお願いいたします。 VS2017 Community ================
回答: BasedOn はスタイルを継承するためのものです。 クラス自体を継承するには C# の方で指示してください。 ``` class MyClass : BaseClass { } ``` ### 追記 次のようにしてください。 ``` public class CustomControl1 : TextBox { static CustomControl1() { DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(TextBox))); } } ``` 新規作成からの変更箇所は「: TextBox」と「FrameworkPropertyMetadata(typeof(TextBox))」です。 これでキャレットが出ることが確認できました。 もしかしたら変更後ソリューションのリビルドが必要かもしれません。