X名称空间的特性(Attribute)x:key和x:type

x名称空间指向http://schemas.microsoft.com/winfx/2006/xaml.它包含的类与xaml有关.

大致有以下一些:
attribute:
X:class          告诉XAML编译器将XAML标签的编译结果与后台的哪个类合并
x:classmodifier            生成的类的访问级别 与x:class 指定的类的控制级别必须相同
x:fieldmodifier          是用来改变引用变量访问级别的            
x:key                            把东西存放到资源字典Resource Dictionary里的Key,检索时用这个Key
x:name                     XAML标签对应对象的Name属性也设为x:Name的值,并把这个值注册到UI树上,方便查找    
x:type                     扩展标记,数据的类型
一个x:key和x:type的demo;
public class myButton : Button
    {
        public Type UserWindowType { set; get; }            //自定义的属性
        protected override void OnClick()
        {
             base.OnClick();
                Window win = Activator.CreateInstance(UserWindowType) as Window;
                if (win != null)
                {
                    win.ShowDialog();
                }
            }
            }
         
    }
自定义一个button,增加一个属性为type类型
重写点击事件,创建一个对象以我们定义的类型,并强制转为window
布局:
<Window x:Class="x名称空间.MainWindow"
        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:x名称空间"
        mc:Ignorable="d"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <StackPanel>
        <local:myButton UserWindowType="{x:Type TypeName=local:Window1}" Margin="5">Show</local:myButton>
    </StackPanel>
</Window>


添加local名称空间导入本地的程序集
创建了自定义的button ,属性使用x名称空间的扩展标记x:type。为本地的window1,所以创建一个window1的窗口
点击解决方案中的添加,添加窗口window1,
布局:
<Window x:Class="x名称空间.Window1"
        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:x名称空间"
        mc:Ignorable="d"
        Title="Window1" Height="300" Width="300"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        >
    <Window.Resources>
        <sys:String x:Key="str">Hello</sys:String>
    </Window.Resources>
    <StackPanel>
        <TextBlock Margin="5" Text="{StaticResource str}"></TextBlock>
        <TextBlock x:Name="text1" Margin="5"></TextBlock>
        <Button Margin="5" Click="Button_Click">Show</Button>
    </StackPanel>
</Window>
资源中使用x:key定义了一个值;
在textblock中使用了定义的值
button的事件处理函数
 private void Button_Click(object sender, RoutedEventArgs e)
        {
            text1.Text = (string)FindResource("str");
  
        }
使用findResource根据关键字找到定义的值。
实际运行效果:




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Ubuntu 20.04中出现"AttributeError: 'NoneType' object has no attribute 'x'"错误通常表示在代码中使用了一个None对象,但尝试访问其属性x。这种错误通常是由于变量未正确初始化或函数返回了None而导致的。 解决这个问题的方法有以下几种: 1. 检查变量初始化:确保在使用变量之前对其进行了正确的初始化。如果变量没有被正确赋值,它的值可能是None,导致出现该错误。 2. 检查函数返回值:如果错误发生在函数调用中,检查函数的返回值是否为None。如果函数返回了None,那么在使用返回值之前需要进行适当的处理,例如添加条件判断语句来处理返回值为None的情况。 3. 检查对象类型:如果错误发生在对象的属性访问中,检查对象的类型是否正确。确保对象不是None类型,并且具有属性x。 4. 检查库或模块的安装:有时候这种错误可能是由于缺少某个库或模块导致的。确保所需的库或模块已正确安装,并且可以在代码中正确导入和使用。 下面是一个示例代码,演示了如何解决"AttributeError: 'NoneType' object has no attribute 'x'"错误: ```python # 示例代码 x = None # 检查变量初始化 if x is None: x = 0 # 检查对象类型 if isinstance(x, int): print(x) else: print("x is not an integer") # 检查函数返回值 def get_value(): return None value = get_value() if value is not None: print(value) else: print("No value returned") # 检查库或模块的安装 import module_name ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值