2.4属性元素

以下c#和xaml是一致的

Rectangle r = new Rectangle();
r.Width = 40;
r.Height = 40;
r.Fill = Brushes.Black;
button.Content = r;

<Button x:Name="button" HorizontalAlignment="Left" Height="120" Margin="81,61,0,0" VerticalAlignment="Top" Width="346" Click="button_Click">
<Button.Content>
<Rectangle Height="40" Width="40" Fill="red">
</Rectangle>
</Button.Content>
</Button>

2.6属性扩展

以下xaml

<Button x:Name="button" Click="button_Click" Background="{x:Null}" Height="{x:Static SystemParameters.IconHeight}" Content="{Binding Path=Height, RelativeSource={RelativeSource Self}}">

和c#等价

button.Background = null;
button.Height = SystemParameters.IconHeight;
System.Windows.Data.Binding binding = new Binding();
binding.Path = new PropertyPath("Height");
binding.RelativeSource = RelativeSource.Self;
button.SetBinding(Button.ContentProperty, binding);

content binding含义:显示在button上的字符串

2.7.2 集合项

<ListBox x:Name="listBox" >
<ListBox.Items>
<ListBoxItem Content="Item 1"></ListBoxItem>
<ListBoxItem Content="Item 2"></ListBoxItem>
</ListBox.Items>
</ListBox>

等价于

System.Windows.Controls.ListBoxItem li1 = new System.Windows.Controls.ListBoxItem();
li1.Content = "Item 1";
listBox.Items.Add(li1);

System.Windows.Controls.ListBoxItem li2 = new System.Windows.Controls.ListBoxItem();
li2.Content = "Item 2";
listBox.Items.Add(li2);

3.2逻辑树与可视树

代码

   public MainWindow()
{
InitializeComponent();
printLogicalTree(0, this); } private void button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("A");
} protected override void OnContentRendered(EventArgs e)
{
base.OnContentRendered(e);
printVisualTree(0, this);
}
void printLogicalTree(int depth, object obj)
{
Debug.WriteLine(new string(' ', depth) + obj);
if (!(obj is DependencyObject)) return;
foreach(object child in LogicalTreeHelper.GetChildren(obj as DependencyObject))
{
printLogicalTree(depth + 1, child);
}
} void printVisualTree(int depth, DependencyObject obj)
{
Debug.WriteLine(new string(' ', depth) + obj);
if (!(obj is DependencyObject)) return;
for(int i=0; i< VisualTreeHelper.GetChildrenCount(obj);i++)
{
printVisualTree(depth + 1, VisualTreeHelper.GetChild(obj,i));
}
}

  

输出

WpfApplication1.MainWindow
System.Windows.Controls.StackPanel
System.Windows.Controls.Label: eeeeeee
eeeeeee
System.Windows.Controls.Label: Label
Label
System.Windows.Controls.Label: Label
Label
System.Windows.Controls.ListBox Items.Count:0
System.Windows.Controls.StackPanel
System.Windows.Controls.Button: Button
Button
System.Windows.Controls.Button: Button
Button
System.Windows.Controls.Primitives.StatusBar Items.Count:1
xxx
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXmlLinq\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXmlLinq.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationFramework-SystemXml\v4.0_4.0.0.0__b77a5c561934e089\PresentationFramework-SystemXml.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\PresentationCore.resources\v4.0_4.0.0.0_zh-Hans_31bf3856ad364e35\PresentationCore.resources.dll”。模块已生成,不包含符号。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\Users\cutepig\AppData\Local\Temp\VisualStudio.XamlDiagnostics.8476\WpfXamlDiagnosticsTap.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\assembly\GAC\Microsoft.VisualStudio.OLE.Interop\7.1.40304.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.OLE.Interop.dll”。模块已生成,不包含符号。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationTypes\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationTypes.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\Accessibility\v4.0_4.0.0.0__b03f5f7f11d50a3a\Accessibility.dll”。无法查找或打开 PDB 文件。
“WpfApplication1.vshost.exe”(CLR v4.0.30319: WpfApplication1.vshost.exe): 已加载“C:\windows\Microsoft.Net\assembly\GAC_MSIL\UIAutomationProvider\v4.0_4.0.0.0__31bf3856ad364e35\UIAutomationProvider.dll”。已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
WpfApplication1.MainWindow
System.Windows.Controls.Border
System.Windows.Documents.AdornerDecorator
System.Windows.Controls.ContentPresenter
System.Windows.Controls.StackPanel
System.Windows.Controls.Label: eeeeeee
System.Windows.Controls.Border
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Controls.Label: Label
System.Windows.Controls.Border
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Controls.Label: Label
System.Windows.Controls.Border
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Controls.ListBox Items.Count:0
System.Windows.Controls.Border
System.Windows.Controls.ScrollViewer
System.Windows.Controls.Grid
System.Windows.Shapes.Rectangle
System.Windows.Controls.ScrollContentPresenter
System.Windows.Controls.ItemsPresenter
System.Windows.Controls.VirtualizingStackPanel
System.Windows.Documents.AdornerLayer
System.Windows.Controls.Primitives.ScrollBar 最小值:0 最大值:0 值:0
System.Windows.Controls.Primitives.ScrollBar 最小值:0 最大值:0 值:0
System.Windows.Controls.StackPanel
System.Windows.Controls.Button: Button
Microsoft.Windows.Themes.ButtonChrome
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Controls.Button: Button
Microsoft.Windows.Themes.ButtonChrome
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Controls.Primitives.StatusBar Items.Count:1
System.Windows.Controls.Border
System.Windows.Controls.ItemsPresenter
System.Windows.Controls.DockPanel
System.Windows.Controls.Primitives.StatusBarItem: xxx
System.Windows.Controls.Border
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Documents.AdornerLayer
线程 0xb10 已退出,返回值为 0 (0x0)。

  

wpf揭秘的更多相关文章

  1. WPF,Silverlight与XAML读书笔记第四十八 - Silverlight网络与通讯

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 这一部分我们重点讨论下Silverlight ...

  2. WPF,Silverlight与XAML读书笔记第四十七 - Silverlight与浏览器

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 这部分内容主要介绍Silverlight与浏 ...

  3. WPF,Silverlight与XAML读书笔记第四十六 - 外观效果之三皮肤与主题

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 皮肤 皮肤是应用程序中样式与模板的集合,可以 ...

  4. WPF,Silverlight与XAML读书笔记第四十五 - 外观效果之模板

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 模板允许用任何东西完全替换一个元素的可视树, ...

  5. WPF,Silverlight与XAML读书笔记第四十四 - 外观效果之样式

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 如果你有Web编程的经验,你会知道使用Sty ...

  6. WPF,Silverlight与XAML读书笔记第四十三 - 多媒体支持之文本与文档

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. Glyphs对象(WPF,Silverlig ...

  7. WPF Media 简单的播放器

    <Window x:Class="PlayTest.MediaControl" xmlns="http://schemas.microsoft.com/winfx/ ...

  8. WPF 各种基础动画实现

    C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syste ...

  9. WPF进阶之接口(2):IDisposable,ICollectionView

    废话不多说,进入正题,先来说说IDisposable,看例子(来自MSDN): using System; using System.ComponentModel; // 下面的例子将展示一个实施了I ...

随机推荐

  1. netty的decoder encoder

    public class DelimiterBasedFrameDecoder extends ByteToMessageDecoder { 随便找了一个用字符串分割粘包的decoder,继承了Byt ...

  2. string使用方法

    转载自:https://blog.csdn.net/tengfei461807914/article/details/52203202 使用场合: string是C++标准库的一个重要的部分,主要用于 ...

  3. webview定位 & native和webview切换

    前言:现在的app大都是混合式的native+webview,对于native可以直接用uiautomator定位然后操作元素,但是web就定位不到了 一.先看看使用native定位的 二.定位web ...

  4. 20165326 java第九周学习笔记

    第九周学习笔记 URL类 属于java.net包 最基本三部分:协议(对象所在的Java虚拟机支持).地址(能连接的有效IP地址或域名).资源(主机上的任何一个文件) 常用构造方法 public UR ...

  5. Flask源码阅读-第四篇(flask\app.py)

    flask.app该模块2000多行代码,主要完成应用的配置.初始化.蓝图注册.请求装饰器定义.应用的启动和监听,其中以下方法可以重点品读和关注 def setupmethod(f): @setupm ...

  6. ios轮播图片用法

    // // ZQRViewController.m // 04-图片轮播器 // // Created by apple on 17-08-24. // Copyright (c) 2017年 zzq ...

  7. 推荐内置android控件的开源项目alcinoe

    开源地址:https://github.com/Zeus64/alcinoe 该控件包,含以下几个控件: 1.基于OpenGL实现的视频播放器 ALVideoPlayer. ALVideoPlayer ...

  8. 河南省第四届ACM省赛(T3) 表达式求值

    表达式求值 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 Dr.Kong设计的机器人卡多掌握了加减法运算以后,最近又学会了一些简单的函数求值,比如,它知道函数min ...

  9. vs2015连接mysql进行数据库操作

    要求:电脑提前安装好vs,mysql. 1.在需要连接mysql的项目上右键选择“属性” -> “C/C++” -> “常规” ->选择“附加包含目录” 在弹出窗口中添加mysql的 ...

  10. 软件安装配置笔记(二)——SQL Server安装

    客户端安装: 服务器端安装: