《深入浅出WPF》读书笔记.4名称空间详解

《深入浅出WPF》读书笔记.4名称空间详解

背景

主要讲明名称空间概念,可以理解为命名空间的引用。

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

👆如x可以理解为一些列命名空间的引用。

不一一列举,只讲几个特殊的名称空间x:Type x:Null x:Data x:Code

代码

x:Type

指定数据类型

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace WpfBookDemo
{
    public class MyButton:Button
    {
        public Type UserWindowType {  get; set; }

        protected override void OnClick()
        {
            base.OnClick();
            Window win=Activator.CreateInstance(this.UserWindowType) as Window;
            if(win is not null)
            {
                win.Show();
            }
        }
    }
}
cs 复制代码
<Window x:Class="WpfBookDemo.MyWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfBookDemo"
        mc:Ignorable="d"
        Title="MyWindow" Height="300" Width="300" >
    <Grid>
        <StackPanel VerticalAlignment="Center">
            <TextBox Width="120" Background="LightGreen" Margin="5"></TextBox>
            <TextBox Width="120" Background="LightGreen" Margin="5"></TextBox>
            <TextBox Width="120" Background="LightGreen" Margin="5"></TextBox>
            <Button Width="120" Background="LightGreen" Content="点击一下" Margin="5"></Button>
        </StackPanel>
    </Grid>
</Window>
cs 复制代码
<Window x:Class="WpfBookDemo.xTypeDemo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfBookDemo"
        mc:Ignorable="d"
        Title="xTypeDemo" Height="450" Width="800">

    <Grid>
        <local:MyButton x:Name="mbtn" Content="点击一下" Width="120" Height="40"
                         UserWindowType="{x:Type local:MyWindow}"></local:MyButton>
    </Grid>
</Window>

x:Null

为属性设置空值

cs 复制代码
<Window x:Class="WpfBookDemo.xNullDemo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfBookDemo"
        mc:Ignorable="d"
        Title="xNullDemo" Height="450" Width="300">
    <Window.Resources>
        <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
            <Setter Property="Width" Value="60"></Setter>
            <Setter Property="Height" Value="36"></Setter>
            <Setter Property="Margin" Value="5"></Setter>
        </Style>
    </Window.Resources>
    <Grid>
        <StackPanel VerticalAlignment="Center">
            <Button></Button>
            <Button ></Button>
            <Button ></Button>
            <Button  Style="{x:Null}" Content="没有样式"></Button>
        </StackPanel>
    </Grid>
</Window>

x:Data

数据提供者

cs 复制代码
<Window x:Class="WpfBookDemo.xDataDemo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfBookDemo"
        mc:Ignorable="d"
        Title="xDataDemo" Height="200" Width="300">
    <Window.Resources>
        <XmlDataProvider x:Key="InventoryData" XPath="Fruits">
            <x:XData xmlns="">
                <Fruits >
                    <Fruit Name="Apple">Apple</Fruit>
                    <Fruit Name="Banana">Banana</Fruit>
                    <Fruit Name="Orange">Orange</Fruit>
                </Fruits>
            </x:XData>
        </XmlDataProvider>
    </Window.Resources>
    <Grid>
        <StackPanel VerticalAlignment="Center" Height="150">
            <ListBox ItemsSource="{Binding Source={StaticResource InventoryData}, XPath=Fruit}">
                
            </ListBox>
        </StackPanel>
    </Grid>
</Window>

x:Code

可以将后端代码挪到xam中

cs 复制代码
<Window x:Class="WpfBookDemo.xCodeDemo"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfBookDemo"
        mc:Ignorable="d"
        Title="xCodeDemo" Height="450" Width="800">
    <Grid>
        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
            <Button x:Name="btn" Content="点击一下" Click="btn_Click" Width="120" Height="40"></Button>
        </StackPanel>
    </Grid>
    <x:Code>
        <![CDATA[
        private void btn_Click(object sender, RoutedEventArgs e)
        {
            MessageBox.Show("使用x:Code可以将后端代码挪动到前端!");
        }
        ]]>
    </x:Code>
</Window>

不想写代码,只想干黑悟空,但是菜!

相关推荐
微露清风9 分钟前
系统性学习Linux-第四讲-进程控制
linux·服务器·学习
01二进制代码漫游日记9 分钟前
C/C++中的内存区域划分
c语言·jvm·数据结构·学习
@蓝莓果粒茶11 分钟前
OpenClaw 最终安装指南:Windows 下用 WSL2 + Ubuntu 跑通源码版
笔记·ai
HAREWORK_FFF11 分钟前
用CAIE认证为简历加分:AI学习者的标准学习周期与规划
人工智能·学习·百度
jjjxxxhhh12318 分钟前
[项目]-搭建一个git服务器呢,完整详细的落地方案
学习
小曹要微笑21 分钟前
C#的运算符重载
开发语言·c#·运算符重载·c#运算符重载
我是唐青枫23 分钟前
C#.NET Channel 深入解析:高性能异步生产者消费者模型实战
开发语言·c#·.net
Crazy Struggle26 分钟前
C# + ViewFaceCore 快速实现高精度人脸识别
c#·人脸识别·.net·开源项目
小曹要微笑32 分钟前
委托(Delegate)在C#中的概念与应用
前端·javascript·c#
左左右右左右摇晃44 分钟前
K8s笔记整理
笔记