У меня есть сетка данных, в которой ItemSource установлен в code-behind, например:
var grid = grdEmploy as DataGrid;
grid.ItemsSource = employments; // list of objects
В этой сетке у меня есть несколько раскрывающихся списков, используемых при редактировании строки. В настоящее время параметры хранятся в локальном CollectionViewSource, например:
<CollectionViewSource x:Key="StatusList" CollectionViewType="ListCollectionView"/>
и устанавливаются при загрузке окна следующим образом:
var statusList= Functions.GetStatuses(); // returns a List<>
CollectionViewSource itemCollectionViewSource;
itemCollectionViewSource = (CollectionViewSource)(FindResource("StatusList"));
itemCollectionViewSource.Source = statusList;
Затем выполняется привязка столбца к сетке. выглядело бы так:
<DataGridTemplateColumn Header="Employment Status" HeaderStyle="{StaticResource WrappedColumnHeaderStyle}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding>
<MultiBinding.Converter>
<local:AimTypeConverter />
</MultiBinding.Converter>
<Binding Path="EmpStat" />
<Binding Path="SourceCollection" Source="{StaticResource StatusList}" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding EmpStat}" SelectedValuePath="Value" DisplayMemberPath="Text" ItemsSource="{Binding Source={StaticResource StatusList}}"></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
Все это прекрасно работает, однако я столкнулся с проблемой, из-за которой в одном из столбцов должны отображаться различные параметры, основанные на другом столбце. Например, если в столбце A указано «1», отобразите «Параметры 2,3», если «2», укажите «Параметры 3,4» и т.д. c.
. Мои мысли заключались в том, чтобы загрузить все параметры в локальный список и каким-то образом отфильтровать их, но я не уверен, как лучше это сделать, любая помощь по этому вопросу будет оценена.