XamDataGrid のセルでフィルタリング可能なコンボボックスを表示するには、CellValuePresenter にフィルタリング機能を有効にした XamMultiColumnComboEditor を配置します。
以下は CellValuePresenter スタイルの実装例です。
テンプレートに XamMultiColumnComboEditor を配置し、 ItemsSource プロパティには DataContext のデータをバインドし、 SelectedValue プロパティには TemplatedParent の Value プロパティを指定しています。SelectedValuePath と DisplayMemberPath にはそれぞれ “Id” と “Name” を指定しています。また、ItemFilters には「含む」でフィルタリングを行う ComboItemFilter を追加しています。
<Style x:Key="MultiColumnComboCellStyle" TargetType="{x:Type igWPF:CellValuePresenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igWPF:CellValuePresenter}">
<ig:XamMultiColumnComboEditor
x:Name="PART_XamMultiColumnComboEditor"
ItemsSource="{Binding DataContext.ComboData, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"
SelectedValue="{Binding RelativeSource={RelativeSource TemplatedParent},Path=Value,Mode=TwoWay}"
SelectedValuePath="Id"
DisplayMemberPath="Name"
SelectedItemsResetButtonVisibility="Collapsed"
AutoGenerateColumns="False"
CustomValueEnteredAction="Allow">
<ig:XamMultiColumnComboEditor.Resources>
<Style TargetType="ig:ComboHeaderCellControl">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
<Style TargetType="ig:ComboCellControl">
<Setter Property="BorderThickness" Value="0,0,0,1"/>
</Style>
</ig:XamMultiColumnComboEditor.Resources>
<ig:XamMultiColumnComboEditor.Columns>
<ig:TextComboColumn Key="Name" Width="*"/>
</ig:XamMultiColumnComboEditor.Columns>
<ig:XamMultiColumnComboEditor.ItemFilters>
<ig:ComboItemFilter LogicalOperator="And">
<ig:ComboItemFilter.Conditions>
<ig:ComparisonCondition Operator="Contains" />
</ig:ComboItemFilter.Conditions>
</ig:ComboItemFilter>
</ig:XamMultiColumnComboEditor.ItemFilters>
</ig:XamMultiColumnComboEditor>
<ControlTemplate.Triggers>
<Trigger Property="IsRecordSelected" Value="True">
<Setter TargetName="PART_XamMultiColumnComboEditor" Property="EditAreaBackground" Value="#00FFFFFF" />
</Trigger>
<DataTrigger Binding="{Binding Path=Record.IsActive, RelativeSource={RelativeSource Self}}" Value="True">
<Setter TargetName="PART_XamMultiColumnComboEditor" Property="EditAreaBackground" Value="#00FFFFFF" />
</DataTrigger>
<Trigger Property="IsActive" Value="True">
<Setter TargetName="PART_XamMultiColumnComboEditor" Property="EditAreaBackground" Value="white" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以上のように定義した CellValuePresenter スタイルを、XamDataGrid の「Test1」フィールドの CellValuePresenterStyle に Key で割り当てます。
<igWPF:XamDataGrid .....>
<igWPF:XamDataGrid.FieldLayouts>
<igWPF:FieldLayout>
<igWPF:FieldLayout.Fields>
<igWPF:Field Name="Test1" >
<igWPF:Field.Settings>
<igWPF:FieldSettings CellValuePresenterStyle="{StaticResource MultiColumnComboCellStyle}"/>
</igWPF:Field.Settings>
</igWPF:Field>
...
</igWPF:FieldLayout.Fields>
</igWPF:FieldLayout>
</igWPF:XamDataGrid.FieldLayouts>
</igWPF:XamDataGrid>