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

转载于:https://www.cnblogs.com/Lulus/p/8158371.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值