《深入浅出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>

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

相关推荐
小心亦新8 分钟前
STM32学习10---串口
stm32·嵌入式硬件·学习
大明者省8 分钟前
四大模态大模型训练体系全解析(架构+范式+分布式+算力成本·)
笔记·分布式·架构
十月的皮皮14 分钟前
C语言学习学习笔记20260704-中缀表达式求值(双栈法)
c语言·笔记·学习
星夜夏空9914 分钟前
C++学习(3) —— C++输入输出流
c++·学习
智者知已应修善业20 分钟前
【 LM358AD方波】2024-12-31
驱动开发·经验分享·笔记·硬件架构·硬件工程
什仙23 分钟前
电感规格书全部专业术语完整释义(村田原厂标准定义)
笔记·电感器
枳实-叶33 分钟前
【Linux驱动开发】第23天:spi_driver 的 probe / remove 函数实现规范
linux·驱动开发·c#
星夜夏空9940 分钟前
C++学习(1) ——C与C++
c语言·c++·学习
生活爱好者!1 小时前
AI加持的笔记工具,比备忘录好用,NAS一键部署blinko
人工智能·笔记
24计网1王仔寿1 小时前
Linux 系统运维全栈学习路线|从 Shell 脚本到容器云 OpenStack 完整学习指南
linux·学习·openstack