zoukankan      html  css  js  c++  java
  • Panel Decorator TextBlock内容模型

    一、Panel内容模型

    Panel内容模型指从System.Windows.Controls.Panel继承的控件,这些控件都是容器,可以在内部承载其他的控件和子容器。Panel内容模型包含的容器有: Canvas DockPanel Grid TabPanel ToolBarOverflowPanel UniformGrid StackPanel ToolBarPanel VirtualizingPanel VirtualizingStackPanel WrapPanel

    对于Panel模型,其包含一个Children属性,表示其所有的子控件和子容器的集合,在XAML代码中可以省略<XXX.Children>标记 如

       <StackPanel Height="184" HorizontalAlignment="Left" Margin="10,10,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="256">
                <StackPanel.Children>
                    <TextBlock Text="ddd" Name="dd"></TextBlock>
                    <Button>Button A</Button>
                </StackPanel.Children>
            </StackPanel>

    也可以通过代码,动态添加Children中的对象

     private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                TextBlock tblock = new TextBlock();
                tblock.Text = "代码";
              
                TextBlock time = new TextBlock();
                time.Text = DateTime.Now.ToString("hh:mm:ss");
    
                StackPanel panel = new StackPanel();
                panel.Children.Add(time);
                panel.Children.Add(tblock);
    
                button4.Content = panel;
            }

    二、Decorator内容模型

    Decorator内容模型指的是从System.Windows.Controls.Decorator类继承的控件,主要是对其中的一个子元素的边缘进行修饰。Decorator模型的主要控件包含: AdornerDecorator Border InlineUIContainer BulletDecorator ButtonChrome ClassicBorderDecorator InkPresenter ListBoxChrome SystemDropShadowChrome Viewbox Decorator模型包含一个Child属性,表示其包含的一个子元素(注意,只能是一个子元素(控件或容器,在容器中可以再添加其他的控件)),Child属性的XAML标记可以省略。

    例如,对于一个TextBox添加一个边框,使用XAML语言定义:

     <StackPanel Height="100" HorizontalAlignment="Left" Margin="10,10,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="200">
                <Border BorderThickness="5" BorderBrush="DarkBlue" Margin="5">
                    <Border.Child>
                        <TextBox Text="TextBox Content"/>
                    </Border.Child>
                </Border>
               
            </StackPanel>

    同样可以通过代码添加

        private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                Border border = new Border();
                border.BorderThickness = new Thickness(5);
                border.BorderBrush = new SolidColorBrush(Colors.DarkRed);
                border.Margin = new Thickness(5);
                TextBox textBox = new TextBox();
                textBox.Text = "TextBox Content Text";
                border.Child = textBox;
                stackPanel1.Children.Add(border);
            }

    三、TextBlock模型

    TextBlock模型实际上指的就是System.Windows.Controls.TextBlock类,它是一个用于显示少量流内容的轻量控件。其中包含一个InLines属性,支持 Inline 流内容元素的承载和显示。 支持的元素包括 AnchoredBlock、Bold(粗体字符串)、Hyperlink(超链接,在浏览器支持的模式下有效)、InlineUIContainer(承载其他控件的容器)、Italic(斜体字符串)、LineBreak(换行符)、Run(普通字符串)、Span(可以设置字体、颜色等的Span) 和 Underline(下划线)。

        <Grid>
            <StackPanel Height="206" HorizontalAlignment="Left" Margin="10,10,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="248">
                <TextBlock Margin="5" TextWrapping="WrapWithOverflow">
                <TextBlock.Inlines>
                    <Bold>
                       <Run>BlockText 控件XAML示例</Run>
                    </Bold>
                    <!--换行-->
                    <LineBreak/>
                    <Run>TextBlock支持以下的几种流显示样式:</Run>
                    <LineBreak/>
                    <Bold>粗体(Bold)</Bold>
                    <LineBreak/>
                    <Italic>斜体(Italic)</Italic>
                    <LineBreak/>
                    <Underline>下划线(Underline)</Underline> 
                    <LineBreak/>
                    <Hyperlink NavigateUri="http://www.microsoft.com">超链接</Hyperlink>
                    <LineBreak/>
                    <Span Foreground="Red" FontSize="18">Span设置字体、颜色等</Span>
                    <LineBreak />
                    <InlineUIContainer>
                        <StackPanel Background="AntiqueWhite" Margin="5">
                            <TextBlock>Inline UI 容器</TextBlock>
                            <Button Content="按钮" Width="83" Height="25" />
                        </StackPanel>
                        
                    </InlineUIContainer>
                </TextBlock.Inlines>
                </TextBlock>
            </StackPanel>
        </Grid>

     同样也可以使用代码添加

     private void Window_Loaded(object sender, RoutedEventArgs e)
            {
                TextBlock myTextBlock = new TextBlock();
                myGrid.Children.Add(myTextBlock); 
                myTextBlock.Inlines.Add("TextBlock的使用:"); 
                Italic myItalic = new Italic(new Run("(如Width Hight等)")); 
                myItalic.FontSize = 24; myItalic.Foreground = Brushes.Purple; 
                myTextBlock.Inlines.Add(myItalic);
                myTextBlock.Inlines.Add("是很奇怪的,它不是普通的像素,这个单位被称为与设备无关的单位"); 
                myTextBlock.TextWrapping = TextWrapping.WrapWithOverflow;
                Bold myBold = new Bold(new Italic(new Run("(Device-independent unit)"))); 
                myTextBlock.Inlines.Add(myBold);
                myTextBlock.HorizontalAlignment = HorizontalAlignment.Stretch; 
                myTextBlock.Inlines.Add(new LineBreak());
                Bold myBold1 = new Bold(new Run("粗体"));
                myTextBlock.Inlines.Add(myBold1); 
                myTextBlock.Inlines.Add(new LineBreak());
                Underline myUnderline = new Underline(new Run("下划线")); 
                myTextBlock.Inlines.Add(myUnderline); 
                myTextBlock.Inlines.Add(new LineBreak()); 
                Hyperlink myHyperlink = new Hyperlink(new Run("百度"));
                myHyperlink.NavigateUri = new Uri("http://www.baidu.com");
                myTextBlock.Inlines.Add(myHyperlink); 
                myTextBlock.Inlines.Add(new LineBreak());
                Span mySpan = new Span(new Run("Span设置字体、颜色等")); 
                mySpan.Foreground = Brushes.Red;//或者改为:mySpan.Foreground=new SolidColorBrush(Colors.Red);
                myTextBlock.Inlines.Add(mySpan); 
                myTextBlock.Inlines.Add(new LineBreak()); 
                InlineUIContainer myInlineUIContainer = new InlineUIContainer(); 
                myTextBlock.Inlines.Add(myInlineUIContainer); 
                StackPanel myStackPanel=new StackPanel();
                myInlineUIContainer.Child = myStackPanel; 
                Button myButton = new Button(); myButton.Content = "lucky";
                myStackPanel.Children.Add(myButton);
            }
  • 相关阅读:
    MouseArea重叠导致按键没响应
    【技术贴】VS2005不能新建项目不能新建网站。提示Microsoft visual studio
    【技术贴】解决虚拟机xp安装雨林木风ylmf os的linux鼠标失效鼠标不准确鼠标定位不正常的根本
    【转】不错的黑客和编程教程资源下载
    【技术贴】网页部分图片显示x红叉,网页图片不显示,网页图片显示异常,网页图片打不开。
    【转】极品免费网站空间申请:000webhost.com免费1.5G美国空间PHP+MySQL
    【转】虚拟机VMware安装ubuntu以及安装vmtools
    技术贴】QQ空间打开缓慢,无法编辑日志,由于您当前网络不稳定导致QQ空间打开异常的解决办法。
    【技术贴】看网页时把图片设为桌面背景后的背景图片存放在那里啊存放路径。
    【技术贴】解决虚拟机xp安装雨林木风ylmf os的linux鼠标失效鼠标不准确鼠标定位不正常的根本
  • 原文地址:https://www.cnblogs.com/shuang121/p/2801397.html
Copyright © 2011-2022 走看看