我有一个包含属性Name
和Value
的对象列表,这些对象显示在列表框中。该列表按Name
排序,我需要在Listbox
的第三列中显示所有前置对象的值的总和。
我创建了一个ItemTemplate
,我称之为ListItemConverter
,应该通过访问父ListItem
将double
转换为所需的Listbox
值。我可以将当前的ListItem
(或者相应的ContentPresenter
)传递给我的转换器
RelativeSource="{RelativeSource TemplatedParent}"
然而,ListItem不包含整个Listbox
的信息(当我这样说时,这似乎很明显),所以我需要传递对Listbox
(或列表)的引用我也用它作为ItemSource
)。
如何将第二个参数传递给我的转换器?如何从我的Listbox
中作为资源访问父ItemTemplate
?
答案 0 :(得分:1)
您有两种选择:
在item类中创建第三个属性,或者使用Name,Value和Sum属性创建新的Item类。尤其是在mvvm场景中使用它
使用MultiConverter和MultiBinding:
<ListBox ItemsSource="{Binding MyCollection}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource YourMultiConverter}">
<Binding />
<Binding Path="ItemsSource" RelativeSource="{RelativeSource AncestorType=ListBox}" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>