しばらく調査した結果、すべてのフレームワークが個々のセル エディターを列に適用できることがわかりました。
これは通常、列定義で行われます。グリッドにはColumnsコレクションがあります。各列は、最初の問題の鍵であったCellTemplateSelectorを設定できます。
これは Telerik グリッド ビューの小さなスニペットですが、私が判断できる限り、CellTemplateSelector まではすべて同じように動作します。もちろん、サードパーティの UI ライブラリのすべてのベンダーは、WPF DataGridの動作をコピーしたようです。
<telerik:RadGridView x:Name="radGridView"
AutoGenerateColumns="False">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn DataMemberBinding="{Binding Name}" Header="Parameter" />
<telerik:GridViewDataColumn DataMemberBinding="{Binding Value}" Header="Value">
<telerik:GridViewDataColumn.CellTemplateSelector>
<telerik:ConditionalDataTemplateSelector>
<telerik:DataTemplateRule Condition="PropertyId < 1">
<DataTemplate>
<TextBox Text="{Binding Value, StringFormat=c}"/>
</DataTemplate>
</telerik:DataTemplateRule>
<telerik:DataTemplateRule Condition="PropertyId > 0">
<DataTemplate>
<CheckBox IsChecked="{Binding Value}" />
</DataTemplate>
</telerik:DataTemplateRule>
</telerik:ConditionalDataTemplateSelector>
</telerik:GridViewDataColumn.CellTemplateSelector>
</telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>
この例では、グリッドの ItmesSource は、Name、Value、およびPropertyIdプロパティを含むビュー モデルにバインドされています。PropertyIdに基づいて、コントロールが選択されます。Telerik コントロールについて私が気に入っている点は、 ConditionalDataTemplateSelectorがそのフレームワークで使用できるため、コード ビハインドが必要ないことです。MVVM がビューにコード ビハインドをクリーンに保つ方が良いと思います。
アップデート:
Syncfusionから回答を受け取りました。彼らは次のように述べています。
1 つの列に異なるセル エディターをロードできます。そのためには、dataGrid.Model.QueryCellInfo も処理する必要があり、データに基づいて CellType を変更する必要があります。コードビハインドを避けることはできません。しかし、これはビヘイビアーを使用して実現できます。