私はWindowsフォームの背景から来て、私はコントロールの表示を制御するためのベストプラクティスと思われるものについて少し混乱しています。私はいくつかの "アイキャンディー"をしたいと思っているコントロールに取り組んでいます。 WinFormsでは、あらゆる種類のビジュアルプログラミングを行うためにペイントイベントをオーバーライドします。私は、WPFが主に考えられた理由は、アクションをディスプレイから分離することであると理解しています。カスタムコントロールテンプレート、表示とWPF
ここに私が確信している部分があります。私はコントロールの "背景"にいくつかの単純な線を描きたいとします。 WinFormsのように、行をテンプレートに追加するか、コードの後ろにDrawing of the Lineを作成するのがベストプラクティスと考えられますか?
で行を行う方が良いでしょう。例えば
は私がCustomControl1という名前のコントロールを開発し、垂直のように中央にあるコントロールの幅全体に線を描画したいのですと言いますコードの背後にあるか、テンプレート内にありますか?私はそうのようなXAMLで完全にそれを行うことができます
:
<Style TargetType="{x:Type local:CustomControl1}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:CustomControl1}">
<Border Padding="{TemplateBinding Padding}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid HorizontalAlignment="Left" Width="{Binding ActualWidth}">
<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Aqua">
<Path Stretch="Fill" Stroke="Black" StrokeThickness="1" Data="M 0,0.5 H 1" />
</Border>
<TextBlock
HorizontalAlignment="Center"
Text="Some Text" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
私は、これは「ベストプラクティス」または私はすべて一緒に使用する必要がありますがあれば、別の方法であるかどうかわからないのですか? 1つをもう一方の上に使用する理由が1つありますか?パフォーマンスの損益はありますか?
WPFコントロールの視覚的な構造は、(デフォルト)スタイルで設定されたTemplateプロパティによって通常定義されます。例えば、 [ControlTemplate](https://msdn.microsoft.com/en-us/library/system.windows.controls.controltemplate(v = vs.110).aspx)ページの*備考*および* Examples *セクションを参照してください。 MSDN。 [スタイルとテンプレート](https://msdn.microsoft.com/en-us/library/ms745683(v = vs.110).aspx)ページの*コントロールテンプレート*セクションも役立ちます。 – Clemens