WEB开发网
开发学院图形图像Flash 为 Silverlight 2 创建自定义控件 阅读

为 Silverlight 2 创建自定义控件

 2008-10-26 11:45:05 来源:WEB开发网   
核心提示: 图 10 包含自定义内容的按钮如果尝试对 SimpleButton 执行相同的操作,您很快会发现其内容仍是普通文本,为 Silverlight 2 创建自定义控件(9),实际上,您甚至无法设置 Content="Test" 来更改按钮文本,而且,您还可以使用简单的 C

为 Silverlight 2 创建自定义控件

图 10 包含自定义内容的按钮

如果尝试对 SimpleButton 执行相同的操作,您很快会发现其内容仍是普通文本。实际上,您甚至无法设置 Content="Test" 来更改按钮文本,这是因为该控件模板当前包含具有硬编码文本的硬编码 TextBlock。

您可以将 SimpleButton 的默认控件模板中的 TextBlock 替换为 ContentPresenter 来弥补这一缺陷,如图 11 所示。TextBlock 只能呈现文本,而 ContentPresenter 可以呈现分配给此控件的 Content 属性的任何 XAML。完成这些更改后,图 12 中的 XAML SimpleButton 声明生成图 13 所示的输出内容。现在,SimpleButton 支持两个自定义级别。可以使用自定义模板重新定义其整个可视树,或者仅使用 Content 属性重新定义其内容。而且,您还可以使用简单的 Content 属性更改按钮文本。SimpleButton 的行为越来越接近真正的按钮控件。

为 Silverlight 2 创建自定义控件图 11 再次讨论 Generic.xaml

<ResourceDictionary
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:custom="clr-namespace:SimpleButtonDemo;assembly=SimpleButtonDemo">
 <Style TargetType="custom:SimpleButton">
  <Setter Property="Width" Value="200" />
  <Setter Property="Height" Value="100" />
  <Setter Property="Background" Value="Lavender" />
  <Setter Property="FontSize" Value="11" />
  <Setter Property="Template">
   <Setter.Value>
    <ControlTemplate TargetType="custom:SimpleButton">
     <Grid x:Name="RootElement">
      <Rectangle x:Name="BodyElement"
       Width="{TemplateBinding Width}"
       Height="{TemplateBinding Height}"
       Fill="{TemplateBinding Background}"
       Stroke="Purple" RadiusX="16" RadiusY="16" />
      <ContentPresenter Content="{TemplateBinding Content}"
       HorizontalAlignment="Center" VerticalAlignment="Center"
       FontSize="{TemplateBinding FontSize}" />
     </Grid>
    </ControlTemplate>
   </Setter.Value>
  </Setter>
 </Style>
</ResourceDictionary>

上一页  4 5 6 7 8 9 10  下一页

Tags:Silverlight 创建 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接