私はそのように見える私のカスタムコントロールを持っています
<UserControl BorderBrush="#A9C2DE" HorizontalAlignment="Left" x:Class="Block"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="86" Width="151" ToolTip="{DynamicResource BasicTooltip}">
<UserControl.Resources>
<ResourceDictionary Source="TextBoxStyles.xaml"/>
</UserControl.Resources>
<DockPanel LastChildFill="True" Style="{StaticResource PanelStyle}">
<Label DockPanel.Dock="Top" Content="{Binding Path=_Code}" HorizontalAlignment="Stretch" Name="label1" Height="25" VerticalAlignment="Top" Style="{StaticResource LabelStyle}" ></Label>
<TextBox Name="txtBox" Style="{StaticResource DefaultStyle}" >
<TextBox.Text>
<Binding Path="_Name">
</Binding>
</TextBox.Text>
</TextBox>
</DockPanel>
ご覧のとおり、このコントロールは、ラベルとテキストボックスを配置したDockPanelで構成されています。コードでは、上記のラベルとテキストボックスの操作にイベントを追加しました。このコントロールの基本的な形状は長方形です。しかし、今日私は、このコントロールがひし形の形をしている、またはより洗練された、カジュアルな長方形を持っている方が良いことを知りました。コントロールに異なる形状を与え、すべての機能(コードファイルに書き込んだすべてのイベント)を維持し、コンテンツ(テキストボックスとラベル)を完全に維持することは可能ですか?
このコードを試してみました
<Style TargetType="{x:Type UserControl}" x:Key="BlockStyle" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Ellipse
x:Name="Border"
Stroke="#FF393785"
StrokeThickness="2"
Fill="Transparent"
>
</Ellipse>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
ただし、コントロールでこのスタイルを使用すると、すべての要素(テキストボックスやラベルなど)がこのスタイルでカバーされます。