我一直想在Silverlight中使用經典的HTML字段集,並且在網上找不到任何解決方案。我如何去建設一個?Silverlight Fieldset控件
1
A
回答
1
我想我會建立一個。
這可能不是最好的解決方法,但它的工作原理,我只是覺得我會分享它,因爲它感覺像其他人可能會尋找同樣的事情。
儘管簡單的解決方案,您可以設置圖例的FontSize,Foreground和標題。
標記:
<Controls:Fieldset BorderBrush="#FFcccccc" Legend="LegendHeader" LegendFontSize="14" LegendForeground="Green">
<Button Content="Button" />
</Controls:Fieldset>
控件樣式:
<Style TargetType="Controls:Fieldset">
<Setter Property="Padding" Value="10"/>
<Setter Property="Margin" Value="10"/>
<Setter Property="BorderBrush" Value="#FFcccccc"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="LegendFontSize" Value="14"/>
<Setter Property="LegendForeground" Value="Black"/>
<Setter Property="FontSize" Value="14"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Controls:Fieldset">
<Grid x:Name="LayoutRoot" Margin="{TemplateBinding Margin}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="20"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="5"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border BorderThickness="1,1,0,0" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="5,0,0,0"/>
<Border Grid.Column="1" BorderThickness="0,1,0,0" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"/>
<Border Grid.Column="3" BorderThickness="0,1,0,0" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}"/>
<Border Grid.Column="4" BorderThickness="0,1,1,0" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="0,5,0,0"/>
<Border Grid.ColumnSpan="5" Grid.Row="1" BorderThickness="1,0,1,1" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" CornerRadius="0,0,5,5"/>
<Border Background="{TemplateBinding Background}" Margin="0,1,0,0" Grid.Column="2"/>
<Grid Grid.Column="2" Margin="10,-30,10,-30">
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="{TemplateBinding LegendFontSize}" Foreground="{TemplateBinding LegendForeground}" Text="{TemplateBinding Legend}"/>
</Grid>
<Border Background="{TemplateBinding Background}" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3"/>
<ContentPresenter
Grid.Column="1"
Grid.ColumnSpan="3"
Grid.Row="1"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Content="{TemplateBinding Content}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
和類:
Public Class Fieldset
Inherits ContentControl
Public Sub New()
End Sub
Public Shared ReadOnly LegendProperty As DependencyProperty = DependencyProperty.
Register("Legend", GetType(String), GetType(Fieldset), New PropertyMetadata(AddressOf OnLegendChanged))
Private Shared Sub OnLegendChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
Dim fieldset = TryCast(d, Fieldset)
fieldset.Legend = e.NewValue.ToString()
End Sub
Public Property Legend As String
Get
Return Me.GetValue(LegendProperty).ToString()
End Get
Set(ByVal value As String)
MyBase.SetValue(LegendProperty, value)
End Set
End Property
Public Shared ReadOnly LegendFontSizeProperty As DependencyProperty = DependencyProperty.
Register("LegendFontSize", GetType(Double), GetType(Fieldset), New PropertyMetadata(AddressOf OnLegendFontSizeChanged))
Private Shared Sub OnLegendFontSizeChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
Dim fieldset = TryCast(d, Fieldset)
fieldset.LegendFontSize = CDbl(e.NewValue)
End Sub
Public Property LegendFontSize As Double
Get
Return CDbl(Me.GetValue(LegendFontSizeProperty))
End Get
Set(ByVal value As Double)
MyBase.SetValue(LegendFontSizeProperty, value)
End Set
End Property
Public Shared ReadOnly LegendForegroundProperty As DependencyProperty = DependencyProperty.
Register("LegendForeground", GetType(SolidColorBrush), GetType(Fieldset), New PropertyMetadata(AddressOf OnLegendForegroundChanged))
Private Shared Sub OnLegendForegroundChanged(ByVal d As DependencyObject, ByVal e As DependencyPropertyChangedEventArgs)
Dim fieldset = TryCast(d, Fieldset)
fieldset.LegendForeground = DirectCast(e.NewValue, SolidColorBrush)
End Sub
Public Property LegendForeground As SolidColorBrush
Get
Return DirectCast(Me.GetValue(LegendForegroundProperty), SolidColorBrush)
End Get
Set(ByVal value As SolidColorBrush)
MyBase.SetValue(LegendForegroundProperty, value)
End Set
End Property
End Class
我的VB.NET代碼道歉。
正如我所說,可能有很多更好的解決方案,但在這裏。
0
相關問題
- 1. Hosting Silverlight控件
- 2. Silverlight 4控件
- 3. Silverlight圖表控件
- 4. Silverlight控件綁定
- 5. Silverlight:對接控件
- 6. Silverlight控件幫助
- 7. 最佳Silverlight控件
- 8. Silverlight圖形控件
- 9. Silverlight瀏覽文件控件
- 10. 從WPF控件到Silverlight控件
- 11. Bing地圖Ajax控件vs Silverlight控件
- 12. 如何用css控制fieldset的位置?
- 13. Silverlight瀏覽器控件
- 14. 創建Silverlight用戶控件
- 15. Silverlight自定義控件
- 16. 在Silverlight中克隆控件
- 17. Silverlight 4下拉控件
- 18. Silverlight - 綁定到控件borderthickick
- 19. Silverlight控件生命週期
- 20. 從Silverlight控件導航URL
- 21. Silverlight中的交換控件
- 22. Silverlight中的菜單控件
- 23. 如何刷新Silverlight控件?
- 24. Silverlight - 用戶控件綁定
- 25. Silverlight 4 MVVM TreeView控件
- 26. 無法查看Silverlight控件
- 27. Silverlight Rich文本框控件
- 28. Silverlight預加載控件
- 29. Silverlight未初始化控件
- 30. Silverlight用戶控件覆蓋