《深入浅出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 小时前
切面学习笔记
笔记·python·学习
测试运维日常笔记10 小时前
Unix/Linux 系统软件包管理笔记
linux·笔记·unix
神奇霸王龙10 小时前
MCP 微软教材背书:5 国产基座 Agent 承接力实测
microsoft·ai·ai作画·agent·ai编程·ai写作·mcp
学掌门10 小时前
超级菜鸟怎么学习数据分析?
python·学习·数据分析
崖边看雾11 小时前
OpenCV 图像处理学习笔记|图像运算、边界填充、阈值处理、图像平滑滤波
图像处理·opencv·学习
呱呱巨基11 小时前
Docker 基础概念学习
linux·c++·学习·docker
AI的探索之旅11 小时前
嵌入式视觉学习路线:Qt + OpenCV + 工业相机,从零到综合项目
qt·opencv·学习
上下求索,莫负韶华11 小时前
笔记-数据库事务和java事务和切面
java·数据库·笔记
sakiko_11 小时前
Swift学习笔记39-实战注意事项
前端·笔记·学习·swift
短视频矩阵源码定制11 小时前
个性化学习机构四大模式深度评测与选型指南
人工智能·学习