WPFでカスタムコントロールを作ろうと調べましたがどこも情報が少なくわからない状態です。
サイトの内容等から手探りで作りましたが、どうしてもそのカスタムコントロールがおかしい?のです。
例えばTextBoxをベースにして適当にデザイナで配置&実行しTextBoxを編集しようとすると本来現れるはずのキャレットが出ずに入力ができません。
十中八九やり方がおかしいのですがどこがおかしいのかわらず途方に暮れております。
以下カスタムコントロールを作成した時の手順です。
1.プロジェクトから新しい項目の追加>WPFでカスタムコントロールを作成
2.カスタムコントロールのクラスの継承元をControlからTextBoxに変更。
3.Generic.xamlで以下のように再編集。
<Style TargetType="{x:Type local:CustomControl1}" BasedOn="{StaticResource {x:Type TextBox}}">
後は何処も弄らずにビルドし実行。
コードにすると以下のようになっています。
[CustomControl1.cs の一部]
```C#
public class CustomControl1 : TextBox
{
static CustomControl1()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1)));
}
}
```
こちらもBasedOnを指定しただけです。
[Generic.xaml の一部]
```xaml
<Style TargetType="{x:Type local:CustomControl1}" BasedOn="{StaticResource {x:Type TextBox}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
元々カスタムコントロールは上記手順を踏まず、普通に.csファイル単体を作成して記述していました。
その場合は普通に入力編集などできていたのでそれでよいのかと思いましたがこの方法は間違っているのでしょうか?
ご教示お願いいたします。
また、どこかわかりやすいサイトなどありましたらお願いいたします。
#VS2017 Community
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/12 12:25