(これを何日も浸透させた後に思いついた私自身の答えについては、以下を参照してください)私はWPFで次のシナリオを達成しようとしています。
表示および追加のデータ入力のためにデータの行を表示しているデータグリッドがあります。これは新しいアプリですが、レガシーデータがあります。
過去のある特定のフィールドには、ランダムにデータが入力されていました。次に、そのフィールドの値を特定のリストに制限します。だから私はDataGridComboBoxColumnを使用しています。FWIW代わりに、ComboBoxを含むDataGridTemplateColumnでこれを試しました。
実行時に、既存の値がリストにない場合は、とにかく表示したいと思います。私はそれを実現させることができないようです。私は膨大な数の解決策(すべての失敗)を試みましたが、ここが出発点として最も論理的なものです。
ドロップダウンの値のリストは、「月」と呼ばれるWindowsリソースで定義されます。
<DataGridComboBoxColumn x:Name="frequencyCombo" MinWidth="100" Header="Frequency"
ItemsSource="{Binding Source={StaticResource months}}"
SelectedValueBinding="{Binding Path=Frequency,UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
何が起こっているのかというと、値がリストにない場合、表示は空白になります。実行時に、IsSynchronizedWithCurrentItem要素が実際にFalseであることを確認しました。それは私が期待していることをしていないだけです。
たぶん私はここで間違った道を進んでいるだけです。たぶん、コンボボックスと組み合わせてテキストボックスを使用する必要があります。XAMLだけでなく、コードを書く必要があるかもしれません。私はさまざまなことを試すのに何時間も費やしてきましたが、解決策に本当に感謝しています。このクラスまたはそのコントロールを使用するためのいくつかの提案がありましたが、使用方法の説明はありません。
本当にありがとう!