Silverlight4 动态改变界面的样式

      最近看了下关于sl4动态改变界面的功能,在此做下记录。

      首先,你要有个整体的样式文件,像sl tools就提供了好几种样式,我使用的就是其中的

ShinyBlue.xaml文件(确保添加这个文件时,xaml代码下面没有波浪线)。

     在界面上放一些控件,看到时候样式变了没。然后放一个按钮来触发改变样式事件。

    重点来了:

   

 

private void button1_Click(object sender, RoutedEventArgs e)
        {
         
string url=url = "SL;component/Assets/Themes/ShinyBlue.xaml";//样式地址
var themeUri = new Uri(
                url, UriKind.Relative);
if (Resources.MergedDictionaries.Count > 0)
            {
                Resources.MergedDictionaries.RemoveAt(
0);//移除旧的样式
            }



            var themeResource 
= Application.GetResourceStream(themeUri);
            
using (var stream = themeResource.Stream)
            {
                
using (var reader = new StreamReader(stream))
                {
                    var xamlText 
= reader.ReadToEnd();
                    var dict 
= XamlReader.Load(xamlText) as ResourceDictionary;
                    Resources.MergedDictionaries.Add(dict);
//添加新的样式。
                }
            }
}

上面的样式文件是要放在sl端的。

 如果你觉得放在sl端比较大的话,那可以放在web端,在需要时进行下载,然后变换样式。

 

 

 

posted @ 2011-03-16 21:16  蔡风  阅读(967)  评论(1编辑  收藏  举报