WEB开发网
开发学院图形图像Flash 快速浏览Silverlight3 Beta: SystemColor(系统颜色... 阅读

快速浏览Silverlight3 Beta: SystemColor(系统颜色)

 2009-05-07 12:05:57 来源:WEB开发网   
核心提示: 现在,除了默认的Button模版不依赖于Foreground 和 Background 之外,快速浏览Silverlight3 Beta: SystemColor(系统颜色)(5),活干的差不多了,它可以使用更多的颜色和一个BorderBrush,当它在运行时创建一个style时,我可以

现在,除了默认的Button模版不依赖于Foreground 和 Background 之外,活干的差不多了。

它可以使用更多的颜色和一个BorderBrush,但也有一些颜色在Button的属性上是无效的。具我所知也就能修改这两种属性.

我需要另外一个Button版本,其使用Foreground, Background 和 BorderBrush. 那我要如何组合这个style呢?

我想到可以使用BasedOn style,其XAML如下;

<UserControl.Resources>
     <local:MySystemStyles
         x:Key="mySystemStyles" />
     <Style
         x:Key="buttonStyle"
         BasedOn="{Binding Source={StaticResource mySystemStyles},Path=ButtonStyle}">

在运行时无法工作( BasedOn 绑定时IE报错).

也许可以变换一下思路,当它在运行时创建一个style时,我可以通知 MySystemStyles 类。它应该基于当前的style。看起来有些麻烦但却可行;

public class MySystemStyles
{
  public Style BasedOnButtonStyle
  {
    get
    {
      return (basedOnButtonStyle);
    }
    set
    {
      basedOnButtonStyle = value;
    }
  }   
  public Style ButtonStyle
  {
    get
    {
      if (buttonStyle == null)
      {
        buttonStyle = MakeStyle(typeof(Button), basedOnButtonStyle, buttonPropertyValues);
      }
      return (buttonStyle);
    }
  }
  static Style MakeStyle(Type t, Style basedOnStyle, Dictionary<DependencyProperty, object> propertyValues)
  {
    Style style = new Style(t);

    style.BasedOn = basedOnStyle;

    foreach (var item in propertyValues)
    {
      style.Setters.Add(new Setter(item.Key, item.Value));
    }
    return (style);
  }
  static Dictionary<DependencyProperty, object> buttonPropertyValues =
    new Dictionary<DependencyProperty, object>()
    {
      { Control.ForegroundProperty, new SolidColorBrush(SystemColors.ControlTextColor) },
      { Control.BackgroundProperty, new SolidColorBrush(SystemColors.ControlColor) },
      { Button.BorderBrushProperty, new SolidColorBrush(SystemColors.ActiveBorderColor) }
    };

  Style buttonStyle;
  Style basedOnButtonStyle;
}

上一页  1 2 3 4 5 6  下一页

Tags:快速 浏览 Silverlight

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