• WPF Convert和RelativeSource


    自定义Converter

    后台Converter类实现接口IValueConverter
    方法Convert是值->UI
    方法ConvertBack是UI->值
    初始化走Convert

    public class ColorConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            //value为当前的对象
            var item = value as ListViewItem;
            var view = ItemsControl.ItemsControlFromItemContainer(item);
            var index = view.ItemContainerGenerator.IndexFromContainer(item);
    
            var data = view.Items[index] as Student;
            if (data.Age == 22)
                return Brushes.Red;
            if (data.Age % 2 == 0)
                return Brushes.Pink;
            else
                return Brushes.DeepSkyBlue;
        }
    
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
    

    前端

    前端引用命名空间,实例化静态资源

    <converts:ColorConvert x:Key="MyConvert"></converts:ColorConvert>
    

    将MyConvert绑定给Style

    <Style x:Key="Item" TargetType="ListViewItem">
        <!--表明将自身的背景颜色修改-->
        <Setter Property="Background">
            <Setter.Value>
                <!--RelativeSource="{RelativeSource Self}"的Self不能用控件名称代替-->
                <Binding RelativeSource="{RelativeSource Self}" Converter="{StaticResource MyConvert}"></Binding>
            </Setter.Value>
        </Setter>
    </Style>
    

    使用Style

    <!--使用ItemContainerStyle将Style赋给ListView-->
    <ListView ItemsSource="{Binding }" ItemContainerStyle="{StaticResource Item}">
        <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Header="姓名" DisplayMemberBinding="{Binding Name}"></GridViewColumn>
                    <GridViewColumn Header="年龄" DisplayMemberBinding="{Binding Age}"></GridViewColumn>
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>
    

    示例代码

    https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/Converts

  • 相关阅读:
    iOS 学习
    swift
    (九)Javabean与Jsp(来自那些年的笔记)
    (八)JSP 技术知识点总结(来自那些年的笔记)
    java抽象工厂模式
    java工厂方法模式
    java的简单工厂模式
    服务提供者框架讲解 之 myJDBC
    第一条:考虑用静态工厂方法代替构造器
    另辟蹊径的归并排序复杂度分析
  • 原文地址:https://www.cnblogs.com/Lulus/p/8158371.html
Copyright © 2020-2023  润新知