Style后台动态定义[转]

 

  XML文件的操作

  DateTimeFormatter时间格式化

  1、 Style 后台动态定义

  相信很多人都在Page.Resources或App.Resources中定义过Style,定义的方式简便而重用性高。但有时也需后台动态定义,例如以下场景:用户可自由DIY页面样式,如背景、字体大小、字体颜色等等。

 

Style tbNewStyle = new Windows.UI.Xaml.Style(); 


tbNewStyle.Setters.Add(new Setter(TextBlock.FontSizeProperty,"25")); 

 
tbNewStyle.Setters.Add(new Setter(TextBlock.ForegroundProperty, new SolidColorBrush(Colors.Yellow))); 

 
tbNewStyle.TargetType=typeof(TextBlock); 

this.tbText.Style = tbNewStyle;


  写法很简单,今天我遇到纠结的问题就是:tbNewStyle.Setters.Add(new Setter(FontSizeProperty,"25"))我用的这样的写法,怎么也动态修改不了样式,后来也是在别人的提点下,才加进TextBlock.FontSizeProperty,因为对于对于控件的属性都是独有的,必须标明是哪类控件的属性方能生效,在这儿也提醒各位一下哈,下次写的时候一定要注意~

  项目中还是应该尽量使用Resources定义资源样式,代码的复用性高,易于维护。

  2、 XML文件的操作

  对于本部分的学习主要还是参数MSDN的示例。

  (1) 读取项目中XML文件的方法

 

StorageFolder storageFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(folder);  
StorageFile storageFile = await storageFolder.GetFileAsync(file);  
XmlLoadSettings loadSettings = new XmlLoadSettings();  
loadSettings.ProhibitDtd = false;  
loadSettings.ResolveExternals = false;  
XmlDocumt document=XmlDocument.LoadFromFileAsync(storageFile, loadSettings);  
String xmlStr=document.GetXml();


  (2) 向XML某结点追加值

var doc = new Windows.Data.Xml.Dom.XmlDocument(); 
var cdata = doc.CreateCDataSection(rss); 
var element = doc.GetElementsByTagName("content").Item(0); 
element.AppendChild(cdata);


  (3)修改某结点的值

  以下示例是修改Product结点集中子结点Sell10day的值大于InStore的结点中hot属性的值

var doc = new Windows.Data.Xml.Dom.XmlDocument(); 
var xpath = "/products/product[Sell10day>InStore]/@hot"; 
var hotAttributes = doc.SelectNodes(xpath); 
for (uint index = 0; index < hotAttributes.Length; index++) 

hotAttributes.Item(index).NodeValue = "1"; 
}


  (4)创建XML文件并保存
var doc = new Windows.Data.Xml.Dom.XmlDocument(); 
doc.LoadXml(xmlstr); 
var file = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync("HotProdcuts.xml"); 
await doc.SaveToFileAsync(file);


  XmlDocument类中还有很多属性,用法跟.net FrameWork中类似,后续我会一一列出来,如追加一个结点、追加属性等。

  3、 DateTimeFormatter 时间格式化

  Win8中提供了非常丰富的时间格式化,种类繁多,主要用DateTimeFormatter进行转换


view sourceprint?
DateTimeFormatter formater= new DateTimeFormatter("shortdate")如:longdate,shorttime,longtime 

formater.Format(dateTime);


  各种日月年的组合

 

formater =new DateTimeFormatter("day month")

  分别格式化日月年的显示格式

formater =new DateTimeFormatter( 
YearFormat.Full,   
MonthFormat.Abbreviated,    
DayFormat.Default, 
DayOfWeekFormat.Abbreviated)

 


读取XML文件


Windows.Storage.StorageFolder storageFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync (Folder); 
  
Windows.Storage.StorageFile storageFile = await storageFolder.GetFileAsync(file); 

Windows.Data.Xml.Dom.XmlLoadSettings xmlloadsettings = new XmlLoadSettings();   

xmlloadsettings.ProhibitDtd = false;   

xmlloadsettings.ResolveExternals = false; 
 
xmlloadsettings.ElementContentWhiteSpace = true; 
  

XmlDocument doc = await Windows.Data.Xml.Dom.XmlDocument.LoadFromFileAsync(storageFile, xmlloadsettings); 

 

string xmlData = doc.GetXml();

 

增加节点

 

//增加节点 

 

var nodelist = doc.SelectNodes("/rss/channel"); 


for (int i = 0; i < 3; i++) 

 

 

XmlElement ele1 = doc.CreateElement("ChannelType"); 

 

XmlElement e1 = doc.CreateElement("ChannelID"); 

 

e1.InnerText = "NO" + i.ToString(); 

 
ele1.AppendChild(e1); 


XmlElement e2 = doc.CreateElement("ChannelName"); 


e2.InnerText = "Channel" + i.ToString(); 


ele1.AppendChild(e2); 

 

nodelist[0].AppendChild(ele1); 

 

}   

await doc.SaveToFileAsync(storageFile);

 

查询并修改相应的节点

var node = nodelist[0].SelectNodes("ChannelType"); 
 
node[0].SelectSingleNode("ChannelID").InnerText = "channel12"; 
 
await doc.SaveToFileAsync(storageFile);

 

 

删除节点


var nodeMain = nodelist[0].SelectNodes("ChannelType")[0]; 
 
var noderemove = nodeMain.SelectSingleNode("ChannelID"); 

nodeMain.RemoveChild(noderemove); 

await doc.SaveToFileAsync(storageFile);

 


以上就是XML的简单操作
更多格式化类型可以参考MSDN示例,里面有非常详细的写法

 

原文网址:http://www.devdiv.com/XML文件操作_Style后台动态定义-thread-124096-1-3.html

 

posted @ 2012-10-22 15:55  @大龙哥  阅读(293)  评论(0编辑  收藏  举报