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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,918评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,874评论 25 708
  • 独自流浪 阳光失去了温和的气息 世界便寂静了许多 看凌乱街头的流浪狗 也没有了往日的追逐 静静地顺...
    梦江瑶阅读 299评论 0 2
  • 水是静的,倒映出万物变迁 风是静的,无情飘成了落叶 我是静的,却看得满眼荒芜 碎了,那晶莹剔透的玻璃心 破了,那流...
    星漫阅读 303评论 0 1

友情链接更多精彩内容