组合框中项目的条件格式



目前,我所在的团队正在构建一个数据网格,其中包含来自视图模型的数据。我们使用的是反应式ui,数据网格中的每个"行"都由一个继承自"反应对象"的视图模型类表示。

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

这是我们必须用PossibleScales列表中的所有项目填充组合框的XAML(我对EditingElementStyle也有相同的内容):

<DataGridComboBoxColumn.ElementStyle>
   <Style TargetType="ComboBox">
       <Setter Property="ItemsSource" Value="{Binding Path=PossibleScales}"  />
       <Setter Property="ItemContainerStyle" Value="{StaticResource Measeurementscale}"></Setter>
   </Style>
</DataGridComboBoxColumn.ElementStyle>

MeaseurementscaleStaticResource定义为控件的资源部分中的一种样式。

<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>

正如您所看到的,comboxitem的当前值被传递到IMultiValueConverter,所以这很好。但现在我想知道如何将DefaultScale(它是视图模型的一个属性,定义为控件的DataContext)也传递给这个转换器。我没能做到这一点。

如有任何帮助,我们将不胜感激。

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

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

相关内容

  • 没有找到相关文章

最新更新