2016-09-07 11 views
2

を制御するために動作しません:マテリアライズデザイン - カスタムXAMLは、私はテキストボックスから継承し、次のカスタムコントロールを持っている

class MyTextBox : TextBox { 

    //custom properties, events and functions 
} 

それはそうのように使用される。..

<TextBox Width="100" Height="30" Text="TextBox" Margin="20" /> 
    <local:MyTextBox Width="100" Height="30" Text="12345" Margin="20" /> 

私が持っていますMyTextBoxには、以下のスクリーンショットに示されているように、その「Material Effect」はありません。ただし、私のプロジェクトではMaterial Design In XAML Toolkitが使用されています。

The MyTextBox does not show materialize design effect.

私はMyTextBoxをにその材料設計のスタイルを与えるために何をすべきか?

+0

MyTextBoxのスタイルを追加しましたか? Visual Studioは、通常、Generic.xamlに1つ作成します。編集しましたか? – Joe

+0

いいえ、他のスタイルは上書きされません。 –

+0

スタイルは必須と思いましたか?とにかく、その理由を答えに入れます – Joe

答えて

5

スタイルは、プロパティTargetTypeによって適用されます。新しいタイプを作成するときには、MaterialDesignTextBoxスタイルが適用されるようにTextBoxとして取得されません。

MyStextBoxのGeneric.xamlにVisualStudioによって自動的に作成されるスタイルが必要です。あなたはそれを変更する必要があります。

<Style TargetType="{x:Type controls:MyTextBox}" BasedOn="{StaticResource MaterialDesignTextBox}"/> 

だから、WPFはMyTextBoxタイプにスタイルを適用するために知っているだけでなく、TextBox

+0

このプロジェクトでVisualStudioがGeneric.xamlを作成していないようです。私は検索し、それを手動でチェックした。 –

+0

どのようにMyTextBoxを作成しましたか? Visual Studioの "Add New Item"> "Custom Control(WPF)"を介して?あるいは、あなたは普通のクラスを作成して自分自身にコードを入れましたか?手動で行った場合、Visual Studioは相対的なスタイルを作成しません。その場合は、上記のコードを自分で追加する必要があります。 – Joe

+0

はい、私が間違ったことは、私は手動でVisualStudioを使用する代わりにクラスを追加しました。だから私はそれを再追加し、あなたの答えに記載したコードを追加しました。しかし、それは効果がありませんでした。本当に「MaterialDesignTextBox」という名前のスタイルがありますか? –

0

はテキストボックス、プロパティborderthickness (0,0,0,2)をかけてみて、あなたが材料設計のものと同じ効果を得ます!

関連する問題