現在、ビューモデルからのデータを含むデータグリッドを構築するチームに所属しています。リアクティブ UI を使用しており、データグリッド内の各「行」は、「ReactiveObject」から継承するビューモデル クラスによって表されます。
ビューモデルには、各行のコンボボックスを埋めるために関心のある 2 つのプロパティがあります。PossibleScalesとDefaultScaleのコレクション。PossibleScalesがコンボボックスに読み込まれ、DefaultScaleを使用して、選択したアイテムがDefaultScaleに設定されます。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>
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 (viewmodel のプロパティであり、コントロールの DataContext として定義されている) を渡す方法を考えています。私はこれを行うことができませんでした。
どんな助けでも大歓迎です。