win8/Metro开发系列三 Xaml常用控件

首先还是那句话,我不是大牛,这些只是简单的记录一下学习的过程,没有太多面向对象和设计模式的思维,只偏基础,不喜莫笑;个人观点如果有不足之处,还望多多指教!由于学的不是太深入这里大多数是面向控件和开发介绍;以使快速了解和开发

这些歌东西大家混个眼熟吧~!

玩过net的应该对这个会很熟悉的,就是套马甲换成适合移动平台触摸体验的了

这里不罗嗦稍微介绍几个

1.appBar

其实也没啥看代码

View Code
 1  <Page.BottomAppBar>
 2         <AppBar >
 3             <Grid>
 4                 <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
 5                     <Button Click="OnMoreClick" Style="{StaticResource   MoreAppBarButtonStyle}"   AutomationProperties.Name="更多" ></Button>
 6                 </StackPanel>
 7                 <StackPanel Grid.Column="1" HorizontalAlignment="Right" Orientation="Horizontal"/>
 8             </Grid>
 9         </AppBar>
10     </Page.BottomAppBar>

问:我想像Ie10一样进去就显示出来这个bar

答:这个啊设置下IsOpen属性吧让他为true,就是默认显示

     说道默认的微软有时挺逗的 就像那个ProgressRing默认的时候是不显示呵呵一开始我用总出不来还以为这控件多高深呢,用错了呢结果是这事……所有有时出了什么问题大多是默认设置的问题,因为可能微软为了考虑性能把 很多浪费性能的默认都去掉了!

问:人家的bar那么好看 ,我的bar那么难看,咋办

答:微软给了了很多样式在StandardStyles.xaml里没事你可以去看看他会让你变美丽

如果不行就先打开“字符映射表”,用了Windows这么多年,不要问我怎么打开。

选择Segoe UI Symbol

得到代码转义一下这里面很多样子注:&#x 开头,这是XML/HTML转义,比如,我们在字符映射表中看到某字符的编码为 U+ E109,在XAML中我们要替换为 &#xE109,没事到这里面逛逛特殊字符都可以用的。再不行自定义图片;

问:哦好像懂了

2.RichTextBlock 

问:我的textblock承载出来的文章怎么能让他能复制。难道用textbox不成

答:非也,有richtextBlock在呢一切都好办,要么他怎么能叫富文本标签

问:这种格式我要用怎么布局怎么排列啊

 

答:richtextBlock

问:从何下手

答:看代码

View Code
 1  /// <summary>richTextBlock加载网易格式的数据
 2         /// 
 3         /// </summary>
 4         /// <param name="msg">传递的加载的信息</param>
 5         public void loadRichText(string msg)
 6         {
 7             RichTextBlock tbContent = new RichTextBlock();
 8             tbContent.Width = CT_WIDTH;
 9             tbContent.Height = CT_HEIGHT;
10             tbContent.TextWrapping = TextWrapping.Wrap;
11             tbContent.Margin = new Thickness(CT_MARGIN);
12             Paragraph ph = new Paragraph();
13             ph.TextIndent = 33;
14             Run txtRun = new Run();
15             txtRun.Text = msg;
16             ph.Inlines.Add(txtRun);
17             tbContent.Blocks.Add(ph);
18             tbContent.FontSize = F_Size;
19             this.proRing.IsActive = false;
20             stPanel.Children.Add(tbContent);
21             // 更新一下状态,方便获取是否有溢出的文本  
22             tbContent.UpdateLayout();
23             bool isflow = tbContent.HasOverflowContent;
24             // 因为除了第一个文本块是RichTextBlock,  
25             // 后面的都是RichTextBlockOverflow一个一个接起来的  
26             // 所以我们需要两个变量  
27             RichTextBlockOverflow oldFlow = null, newFlow = null;
28             if (isflow)
29             {
30                 oldFlow = new RichTextBlockOverflow();
31                 oldFlow.Width = CT_WIDTH;
32                 oldFlow.Height = CT_HEIGHT;
33                 oldFlow.Margin = new Thickness(CT_MARGIN);
34                 tbContent.OverflowContentTarget = oldFlow;
35                 stPanel.Children.Add(oldFlow);
36                 oldFlow.UpdateLayout();
37                 // 继续判断是否还有溢出  
38                 isflow = oldFlow.HasOverflowContent;
39             }
40             while (isflow)
41             {
42                 newFlow = new RichTextBlockOverflow();
43                 newFlow.Height = CT_HEIGHT;
44                 newFlow.Width = CT_WIDTH;
45                 newFlow.Margin = new Thickness(CT_MARGIN);
46                 oldFlow.OverflowContentTarget = newFlow;
47                 stPanel.Children.Add(newFlow);
48                 newFlow.UpdateLayout();
49                 // 继续判断是否还有溢出的文本  
50                 isflow = newFlow.HasOverflowContent;
51                 // 当枪一个变量填充了文本后,  
52                 // 把第一个变量的引用指向当前RichTextBlockOverflow  
53                 // 确保OverflowContentTarget属性可以前后相接  
54                 oldFlow = newFlow;
55             }
56             //return RichTextBlock;
57         }

问:为什么啊

答:真是小白,就是他有个属性就是判断有没有超出则把剩余的数据赋给下一个模块继续显示

问:哦懂了

问:rich很富有啊;那还有什么用法么

答:……咋啥都问呢,自己去gg其余的我也不知道了,gg完也跟我说一下,今天讲到这

 

 

就到这了简单的说下很杂很乱,不喜莫骂谢谢指导~

posted @ 2012-11-02 14:45  ~星~  阅读(1328)  评论(0编辑  收藏  举报