如何绑定到一个不同的数据上下文然后继承一个样式值?

How to bind to a different datacontext then the inherited one for the style value?

而不是使用带有 MulitBinding 的许多 DataTriggers 来设置 ListViewItem 的背景颜色:

 <DataTrigger Value="4" >
                <DataTrigger.Binding>
                    <MultiBinding Converter="{StaticResource WaitStatus}">
                        <Binding Path="Checkin" />
                        <Binding Path="Checkout" />
                        <Binding Path="Notseen" />
                    </MultiBinding>
                </DataTrigger.Binding>
                <Setter Property="Background" Value="{StaticResource GreenBrush}" />
            </DataTrigger>

我正在尝试使用附加的 属性 到 return ListViewItem 背景的画笔颜色。代码类似于:

<Style x:Key="listViewItemStyle" TargetType="{x:Type ListViewItem}">
        <Setter Property="v:ListViewItemBehavior.MyValue" Value="{Binding testvalue}"/>
        <Setter Property="Background" Value="{Binding Path=(v:ListViewItemBehavior).Background}" />

我的目标是第一个 setter 将 ListViewItem 的 DataContext 传送到位于 v:ListViewItemBehavior.MyValue 的附加 属性。附件属性然后计算背景颜色并将结果放入ListViewItemBehavior.Background。

第二个 setter 是从 ListViewItemBehavour 中提取背景颜色并从中设置 ListViewItem 的背景颜色。

附加的 属性、ListViewItemBehaviour 可以正确设置背景颜色,但我不知道如何 return 这种颜色返回到 XAML 第二个 setter。第二个 setter 中值的 {Binding...} 总是在 ListViewItem 的 DataContext 中查找 v:ListViewItemBehavior——我无法让它在 ListViewItemBehaviour 中查找背景颜色.

如何为 Setter 值 属性 使用不同的数据上下文,然后使用从 ListViewItem 继承的数据上下文? (请语法)。

TIA

将 Binding 的 RelativeSource 设置为 Self,即样式化的 ListViewItem:

<Setter Property="Background"
    Value="{Binding Path=(v:ListViewItemBehavior).Background,
                    RelativeSource={RelativeSource Self}}" />