对于ADAL,我需要找出ListBox
的每个项目相对于当前选定项目的位置,因为我想在当前选定项目之前将项目设置为样式,而不是当前所选项目后面的项目(按Trigger
)。
我尝试不同的方法,其中之一是将MultiBinding
与MultiValueConverter
一起使用。
DataTrigger
的XAML如下所示:
<DataTrigger Value="True">
<DataTrigger.Binding>
<MultiBinding Converter="{StaticResource rpc}">
<Binding Path="." RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type ListBox}}" />
<Binding Path="." RelativeSource="{RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="..." Value="..." />
</DataTrigger>
此DataTrigger
用于Style
的{{1}}内部的ItemTemplate
。
提到的ListBox
“ rpc”是Converter
。
如果我在此MultiValueConverter
的{{1}}函数内设置一个断点,则将Convert
实例作为第一个值,并将MultiValueConverter
实例作为第二个值,因此ListBox
可以正常工作。
但是,如果我尝试使用ListBoxItem
找出MultiBinding
的{{1}}内ListBoxItem
的索引,我总是得到-1,就像{ {1}}不是ItemsCollection
的成员。
即使我尝试通过检查ListBox
项是否相等(listBox.Items.IndexOf(listBoxItem)
来找出ListBoxItem
,我也不会得到ItemsCollection
。
为什么会这样?
如果没有ListBoxItem
,我怎么还能得到Content
的索引?
答案 0 :(得分:1)
由于FOREIGN KEY (vin, order_number) REFERENCES PartsOrder (vin, order_number)
集合不包含任何Items
元素,而是包含ListBoxItem
的实际内容,因此得到-1。
尝试一下:
ListBoxItem