У меня есть свой пользовательский элемент управления, который выглядит так
<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>
Однако, когда я использую этот стиль в своем контроле, все элементы (текстовое поле, метка и т. Д.) Покрываются этим стилем.