如何将样式值绑定到不同的数据上下文,而不是继承的数据上下文



代替使用多个datatrigger与multibinding来设置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>

我试图使用附加属性来返回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:ListViewItem behavior . myvalue。然后附加的属性计算背景颜色,并将结果放在ListViewItemBehavior.Background.

第二个setter是从listviewitembehavior中提取背景色,并从它中设置ListViewItem的背景色。

附加的属性,ListViewItemBehaviour正确地设置背景颜色,但我无法得到如何将这个颜色返回到第二个setter的XAML。{绑定…}的值总是在ListViewItem的DataContext中查找v:ListViewItemBehavior——我不能让它在ListViewItemBehavior中查找背景颜色。

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

TIA

设置绑定的RelativeSourceSelf,即样式化的ListViewItem:

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

最新更新