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

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

相关推荐
一只小风华~16 分钟前
学习笔记:Vue Router 中的链接匹配机制与样式控制
前端·javascript·vue.js·笔记·学习·ecmascript
攻城狮CSU1 小时前
WPF中核心接口 INotifyPropertyChanged
wpf
c#上位机1 小时前
wpf之Interaction.Triggers
c#·wpf
月临水2 小时前
Redis 学习笔记(二)
redis·笔记·学习
摇滚侠2 小时前
Spring Boot 3零基础教程,条件注解,笔记09
java·spring boot·笔记
Nan_Shu_6142 小时前
学习SpringBoot
java·spring boot·后端·学习·spring
●VON2 小时前
重生之我在大学自学鸿蒙开发第二天-《MVVM模式》
学习·华为·harmonyos
你真的可爱呀3 小时前
uniapp学习【vue3在uniapp中语法,使用element,使用uView UI】
学习·uni-app
想你依然心痛3 小时前
Spark大数据分析与实战笔记(第六章 Kafka分布式发布订阅消息系统-01)
笔记·分布式·spark
2501_916766543 小时前
【Git学习】初识git:简单介绍及安装流程
git·学习