###前提・実現したいこと
現在VisuasStudio2013Pro(C#)を使用しWPFカスタムコントロールを作成しています。
やりたいこととしてはTextBoxを継承したコントロールをさらに継承という風に
既存コントロールから継承していくコントロールを作成したいと考えています。
###発生している問題・エラーメッセージ
現状wpfカスタムコントロールライブラリを使用しTextBoxを継承した
ColorTextBoxを作りました。機能としてはフォーカスをテキストボックス
に当てるとCyanに変更するといったものです。(プロパティにより色の選択ができる)
次にこのColorTextBoxを継承したコントロールを作る際なのですが、
C#のコード部分はそのまま継承したものが使えるのは分かります。
しかし、Generic.Xamlの部分をどのように継承・記述をしていけば良いのかが
分かりません。
これから既存コントロールから継承したコントロールを作成し、またそれを
継承という風に作る際にGeneric.xamlをどのように扱っていけば良いのか
Generix.xamlの扱いという漠然とした質問で申し訳ないのですが、
教えていただければと存じます。
###該当のソースコード
C#
1ColorTextBoxと書きましたが実験段階でクラス名をそのままの 2CustomConrol1でやっております。 3分かりにづらく申し訳ないです。 4 5<ResourceDictionary 6 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 7 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 8 xmlns:local="clr-namespace:WpfCustomControlLibrary2"> 9 <Style TargetType="{x:Type local:CustomControl1}" 10 BasedOn="{StaticResource {x:Type TextBox}}" > 11 <Setter Property="Template"> 12 <Setter.Value> 13 <ControlTemplate TargetType="{x:Type local:CustomControl1}"> 14 15 <Border Background="{TemplateBinding Background}" 16 BorderBrush="{TemplateBinding BorderBrush}" 17 BorderThickness="{TemplateBinding BorderThickness}"> 18 <TextBox x:Name="Textbox" Height="{TemplateBinding Height}" 19 Width="{TemplateBinding Width}" 20 Text="{TemplateBinding Text}" 21 /> 22 </Border> 23 </ControlTemplate> 24 </Setter.Value> 25 </Setter> 26 </Style> 27</ResourceDictionary> 28 29public class CustomControl1 : TextBox 30 { 31 static CustomControl1() 32 { 33 DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl1), new FrameworkPropertyMetadata(typeof(CustomControl1))); 34 } 35 36 private TextBox Textbox; 37 38 private void FocusGodColor(object sender, RoutedEventArgs e) 39 { 40 if (Godfocustype == 有無設定.有り) 41 { 42 switch (GodFocusColor) 43 { 44 case ゴットフォーカスの色設定.Cyan: 45 Textbox.Background = new SolidColorBrush(Colors.Cyan); 46 break; 47 case ゴットフォーカスの色設定.Green: 48 Textbox.Background = new SolidColorBrush(Colors.Green); 49 break; 50 case ゴットフォーカスの色設定.Yellow: 51 Textbox.Background = new SolidColorBrush(Colors.Yellow); 52 break; 53 case ゴットフォーカスの色設定.White: 54 Textbox.Background = new SolidColorBrush(Colors.White); 55 break; 56 } 57 } 58 } 59 60 private void FocusLostColor(object sender, RoutedEventArgs e) 61 { 62 if (Lostfocustype == 有無設定.有り) 63 { 64 switch (LostFocusColor) 65 { 66 case ロストフォーカスの色設定.Cyan: 67 Textbox.Background = new SolidColorBrush(Colors.Cyan); 68 break; 69 case ロストフォーカスの色設定.Green: 70 Textbox.Background = new SolidColorBrush(Colors.Green); 71 break; 72 case ロストフォーカスの色設定.Yellow: 73 Textbox.Background = new SolidColorBrush(Colors.Yellow); 74 break; 75 case ロストフォーカスの色設定.White: 76 Textbox.Background = new SolidColorBrush(Colors.White); 77 break; 78 } 79 } 80 } 81 82 83 public override void OnApplyTemplate() 84 { 85 base.OnApplyTemplate(); 86 87 this.Textbox = GetTemplateChild("Textbox") as TextBox; 88 89 if (this.Textbox != null) 90 { 91 this.Textbox.GotFocus += this.FocusGodColor; 92 this.Textbox.LostFocus += this.FocusLostColor; 93 } 94 95 } 96 97 //enum型で有り無しの設定 98 public enum 有無設定 99 { 100 有り, 101 無し 102 } 103 104 //ゴッドフォーカスONOFFプロパティ追加 105 [Browsable(true)] 106 [Category("独自設定")] 107 public 有無設定 Godfocustype { set; get; } 108 109 //ロストフォーカスONOFFプロパティ追加 110 [Browsable(true)] 111 [Category("独自設定")] 112 public 有無設定 Lostfocustype { set; get; } 113 114 //ゴッドフォーカス色設定Enum 115 public enum ゴットフォーカスの色設定 116 { 117 118 Cyan, 119 Green, 120 Yellow, 121 White 122 } 123 124 //ゴッドフォーカス色設定プロパティ 125 [Browsable(true)] 126 [Category("独自設定")] 127 public ゴットフォーカスの色設定 GodFocusColor { set; get; } 128 129 //ロストフォーカス色設定Enum 130 public enum ロストフォーカスの色設定 131 { 132 White, 133 Cyan, 134 Green, 135 Yellow 136 137 } 138 139 //ロストフォーカス色設定プロパティ 140 [Browsable(true)] 141 [Category("独自設定")] 142 public ロストフォーカスの色設定 LostFocusColor { set; get; } 143 144 //エラー時の色設定Enum 145 public enum エラー時の色設定 146 { 147 148 149 red, 150 Green, 151 Yellow, 152 Cyan, 153 White 154 } 155 156 //エラー時の色設定プロパティ 157 [Browsable(true)] 158 [Category("独自設定")] 159 public エラー時の色設定 ErrorColor { set; get; } 160 161 } 162} 163 164 165
###試したこと
上記のCustomControl1を継承したコントロールを作成し、次に数値に特化した
NumberTextBoxを作りたいと考えております。
またTextBoxを継承してつくるのではなく、このCustomControl1の機能を引き継いだ
NumberTextBoxを作成したいと考えております。
###補足情報(言語/FW/ツール等のバージョンなど)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。