目前我在一个团队中构建一个包含来自视图模型的数据的数据网格。我们使用的是响应式 UI,数据网格中的每个“行”都由一个继承自“ReactiveObject”的视图模型类表示。
我感兴趣的视图模型中有 2 个属性可以填充每行中的组合框。PossibleScales和DefaultScale的集合。PossibleScales被加载到组合框中,DefaultScale用于将 selecteditem 设置为DefaultScale。DefaultScale始终包含在DefaultScale集合中。我想要实现的是组合框中的任何非默认比例都以斜体格式格式化。所以我创建了一个调用IMultiValueConverter的样式。所以,我需要给这个 IMultiValueConverter 2 个参数,即当前比例(来自 PossibleScales 和 DefaultScale.
这是我们必须用可能的比例列表中的所有项目填充组合框的 XAML(我对 EditingElementStyle 有相同的):
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding Path=PossibleScales}" />
<Setter Property="ItemContainerStyle" Value="{StaticResource Measeurementscale}"></Setter>
</Style>
</DataGridComboBoxColumn.ElementStyle>
Measeurementscale StaticResource被定义为控件资源部分中的样式。
<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)也传递给这个转换器。我无法做到这一点。
任何帮助,将不胜感激。