zoukankan      html  css  js  c++  java
  • XAML中的戏法

    WPF为我们提供的良好的数据绑定特性.我们可以不关心具体class与前台数据同步的问题了.从此程序员就专心研究后台业务逻辑了,事实是这样的么?我想每一个WPF开发人员也不能很肯定的回答.

    我在项目中遇到的问题我来总结一下

    1.C#具有良好的特性,但是XAML却不是天然的就支持多态.

    2.C#2.0的泛型为我们提供了良好的开发模具,从此又让我们少写了无数代码,提高了部分程序的运行效率,但是XAML还是不支持,泛型中的"<>"在XAML中无法区分;

    3.C#中我们很容易根据类的enum属性判断进一步的行为,XAML中我们是不是有时候也有这样的需求呢?

    我们的应对之道:

    1.XAML中我们来应对C#中的多态的法宝就是在想要根据展示数据的地方放置ContentControl,具体Content属性绑定多态的基类属性上去,

    <DataTemplate DataType="{x:Type 具体多态的类型}">
          具体的内容展示
    </DataTemplate>

    2,泛型因为<>的原因不能直接用在XAML中,那我们就只能有一下由C#先处理掉<>了.写一个你想要的类名A继承自泛型类.类A中无任何内容只是个别名而已.XAML中就用这个别名就可以了.(可以把这些别名统一放到一个cs文件下去管理)

    3.根据enum的值进行不同的前端展示,XAML为我们提供了DataTrigger,具体写法如下

             <DataTrigger Binding="{Binding 属性}" Value="{x:Static enum的值}"> 
                    
    <Setter Property="控件属性" Value="具体值或者一个资源"/> 
              
    </DataTrigger>

    这里还有个小技巧,如果你的enum特别的多,我们想为它提供一个默认的属性行为可以这样去做

    <Setter Property="控件属性" Value="具体值或者一个资源"/> 
    <DataTrigger Binding="{Binding 属性}" Value="{x:Static enum的值}"> 
                
    <Setter Property="控件属性" Value="具体值或者一个资源"/> 
    </DataTrigger>

    单独提取出来和DataTrigger并列放就行了!

  • 相关阅读:
    Kafka相关知识点
    好的前端界面
    linux下配置go环境
    插入排序(数据是局部有序的)
    选择排序
    spring jpa 条件查询统计
    java代码优化
    JAVA创建临时文件IO
    spring防止表单重复提交
    Java文件下载时所输出文件名乱码问题
  • 原文地址:https://www.cnblogs.com/cuiweifu/p/XAML_TIP_BINDING.html
Copyright © 2011-2022 走看看