我有一個看起來像WPF菱形自定義控件
<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>
然而,當我在我的控制使用這種風格,所有元素(文本框和標籤等)通過這種風格coverd。
在我看來,它不工作。如果我將我的文本框等傳遞給此代碼,我得到的錯誤在C#代碼(編譯器沒有看到我的代碼中引用的文本框等)。我想有一個resourcedictionary(實際上將代碼放在資源字典中),在那裏我會保留樣式(它將負責控制的形狀)。控制內容永遠不會改變,我只需要控制邊框形狀變成菱形。 – elMariachi 2010-09-12 22:51:35