Lyn*_*ing 5 c# wpf ivalueconverter
我希望能够在DataTemplate中显示索引值,但我不希望数据由模型或视图模型保留或支持.换句话说,如果OC中项目的顺序发生变化,我不想重新计算索引.该值应与OC中的基础索引固有关联.如果索引从0开始是可以的(实际上,我希望它).
其他人使用的一种方法是AlternationIndex AP,但这在某些情况下有其自身的缺陷.
最后一个想法:我不禁想到转换器将在最终解决方案中发挥作用.
我会使用转换器来做到这一点.
诀窍是在它ConverterParameter
或者依赖属性上给它源集合.此时,转换就像使用一样简单IndexOf
.
这是一个示例转换器,它执行此操作:
public class ItemToIndexConverter : IValueConverter
{
public object Convert(...)
{
CollectionViewSource itemSource = parameter as CollectionViewSource;
IEnumerable<object> items = itemSource.Source as IEnumerable<object>;
return items.IndexOf(value as object);
}
public object ConvertBack(...)
{
return Binding.DoNothing;
}
}
Run Code Online (Sandbox Code Playgroud)
您可以强制键入实现,将格式化的字符串作为数字返回,等等.基本模式如上所述.
这个实现使用参数方法,因为在我看来,DP更加混乱.因为你无法绑定ConverterParameter
,所以我将它设置为绑定到集合的静态资源:
<CollectionViewSource x:Key="collectionSource" Source="{Binding Path=MyCollection}" />
...
<TextBlock Text="{Binding Converter={StaticResource ResourceKey=ItemToIndexConverter},
ConverterParameter={StaticResource ResourceKey=collectionSource}}"/>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1963 次 |
最近记录: |