WPF:项目容器不属于项目集合

时间:2019-10-11 17:51:25

标签: wpf

对于ADAL,我需要找出ListBox的每个项目相对于当前选定项目的位置,因为我想在当前选定项目之前将项目设置为样式,而不是当前所选项目后面的项目(按Trigger)。

我尝试不同的方法,其中之一是将MultiBindingMultiValueConverter一起使用。

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的索引?

1 个答案:

答案 0 :(得分:1)

由于FOREIGN KEY (vin, order_number) REFERENCES PartsOrder (vin, order_number) 集合不包含任何Items元素,而是包含ListBoxItem的实际内容,因此得到-1。

尝试一下:

ListBoxItem