Wpf Combox中项目的条件格式

Wpf Combox中项目的条件格式,wpf,xaml,combobox,viewmodel,wpfdatagrid,Wpf,Xaml,Combobox,Viewmodel,Wpfdatagrid,目前,我正在一个团队中构建一个包含来自viewmodel的数据的datagrid。我们使用的是反应式ui,datagrid中的每一行都由继承自“ReactiveObject”的viewmodel类表示 viewmodel中有两个我感兴趣的属性,用于填充每行的组合框。可能的销售和DefaultScale的集合。可能的刻度被加载到组合框中,DefaultScale用于将selecteditem设置为DefaultScale。DefaultScale始终包含在DefaultScale集合中。我想要实现

目前,我正在一个团队中构建一个包含来自viewmodel的数据的datagrid。我们使用的是反应式ui,datagrid中的每一行都由继承自“ReactiveObject”的viewmodel类表示

viewmodel中有两个我感兴趣的属性,用于填充每行的组合框。可能的销售和DefaultScale的集合。可能的刻度被加载到组合框中,DefaultScale用于将selecteditem设置为DefaultScale。DefaultScale始终包含在DefaultScale集合中。我想要实现的是,组合框中的任何非默认比例都是斜体格式的。所以我创建了一个调用IMultiValueConverter的样式。因此,我需要给这个IMultiValueConverter 2参数,当前刻度(来自可能的刻度和默认刻度的集合)

以下是XAML,我们必须用可能销售列表中的所有项目填充组合框(我有相同的用于EditingElementStyle):


MeasurementScaleStaticResource在控件的resources部分中定义为一种样式

<Style x:Key="Measeurementscale" TargetType="ComboBoxItem">
    <Setter Property="FontStyle">
       <Setter.Value>
          <MultiBinding Converter="{StaticResource NonDefaultScaleToItalicConverter}">
              <Binding RelativeSource="{RelativeSource Self}" Path="DataContext"/>
          </MultiBinding>
       </Setter.Value>
    </Setter>
</Style>

如您所见,comboboxitem的当前值被传递给了IMultiValueConverter,这很好。但现在我想知道如何将DefaultScale(它是viewmodel的一个属性,定义为控件的DataContext)也传递给这个转换器。我还无法做到这一点


非常感谢您的帮助。

您可以使用
FindAncestor
获取设置此数据上下文的父控件,并将其绑定。例如:

<Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ComboBox}"
         Path="DataContext.DefaultScale" />

我不知道为什么,但FontStyle不起作用。不透明度是,所以我改用它。对我来说,最重要的是有一个非默认比例的视觉线索,你的回答帮助很大。所以我实现了我的目标:组合框中项目的条件格式
<Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=ComboBox}"
         Path="DataContext.DefaultScale" />