РЕДАКТИРОВАТЬ (уточнение требований)
У меня DataGrid
, как показано ниже. Значения в столбце «Имя поля для хранения старого EmpNo» изменяются в зависимости от значения, выбранного в столбце «Новое правило EmpNo». Для этого каждый элемент в DataGrid
ItemsSource
имеет свой собственный TableNameForOldDataCollection
. Мне нужно привязаться к этому TableNameForOldDataCollection
, а не к статическому свойству, которое нельзя изменить.
Если есть способ сделать эту привязку при использовании DataGridComboBoxTemplate
, я бы предпочел это. Если нет, я хотел бы знать, можно ли создать шаблон _7 _ / _ 8_, чтобы он соответствовал шаблону DataGridComboBoxTemplate
OP
У меня есть сценарий, в котором я использую DataGridComboBoxColumn
для одного из DataGrid
столбцов. В другом столбце мне нужно использовать DataGridTemplateColumn
с ComboBox
, чтобы правильно привязать к динамическому ItemSource в виртуальной машине.
DataGridComboBoxColumn
(«Новое правило EmpNo») оформлено иначе, чем DataGridTemplateColumn
, с ComboBox
(«Имя поля для хранения старого EmpNo»), как показано здесь:
Как я могу стилизовать _17 _ / _ 18_, чтобы соответствовать DataGridComboBoxColumn
, в частности, как скрывается поле со списком, когда фактическая ячейка не выбрана (например, вторая строка «Новое правило EmpNo»).
ИЗМЕНИТЬ (добавлен DataGrid
код):
<UserControl.Resources>
<ResourceDictionary>
<CollectionViewSource x:Key="StaticEmpNoRuleCollection" Source="{Binding EmpNoRuleCollection}" />
</ResourceDictionary>
</UserControl.Resources>
....
<DataGrid Name="DataGrid_MultiCompanyInfo"
ItemsSource="{Binding Model.EmpNoOptionsCollection}"
SelectedItem="{Binding SelectedEmpNoOptions}"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False">
<DataGrid.Columns>
<!-- Company -->
<DataGridTextColumn Header="Company"
Binding="{Binding Company}"
IsReadOnly="True" />
<!-- New EmpNo Rule -->
<DataGridComboBoxColumn Header="New EmpNo Rule"
Width="200"
ItemsSource="{Binding Source={StaticResource StaticEmpNoRuleCollection}}"
DisplayMemberPath="Description"
SelectedValueBinding="{Binding SelectedEmpNoRule, UpdateSourceTrigger=PropertyChanged}"/>
<!-- Field Name To Store Old EmpNo -->
<DataGridTemplateColumn Header="Field Name To
Store Old EmpNo"
Width="150" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="OldEmpNo_ComboBox"
Margin="-5,0,0,0"
ItemsSource="{Binding TableNameForOldDataCollection}"
SelectedValue="{Binding TableNameForOldData, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
...
</DataGrid.Columns>
</DataGrid>
RelativeSource="{RelativeSource AncestorType={x:Type DataGrid}}"
. - person Jose   schedule 20.09.2016