В настоящее время я работаю в команде, создающей сетку данных, содержащую данные, поступающие из модели представления. Мы используем реактивный интерфейс, и каждая «строка» в сетке данных представлена классом модели представления, который наследуется от «ReactiveObject».
В модели представления есть 2 свойства, которые меня интересуют, чтобы заполнить поле со списком в каждой строке. Коллекция PossibleScales и DefaultScale. PossibleScale загружаются в поле со списком, а DefaultScale используется для установки выбранного элемента в DefaultScale. DefaultScale всегда содержится в коллекции DefaultScale. Чего я хочу добиться, так это того, чтобы любой масштаб не по умолчанию в поле со списком был отформатирован курсивом. Поэтому я создал стиль, который вызывает IMultiValueConverter. поэтому мне нужно указать параметры IMultiValueConverter 2, текущую шкалу (из набора PossibleScales и DefaultScale.
Вот XAML, который мы должны заполнить поле со списком всеми элементами в списке PossibleScales (у меня есть то же самое для 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>
Как видите, текущее значение элемента со списком передается в IMultiValueConverter, так что это здорово. Но теперь мне интересно, как я могу передать DefaultScale (который является свойством модели представления и определяется как DataContext для элемента управления) этому преобразователю. Я не смог этого сделать.
Любая помощь будет оценена по достоинству.