【发布时间】:2018-01-20 08:08:46
【问题描述】:
我有一个绑定到我称之为“GridCollection”的 DataTable 的 DataGrid:
<!--DataGrid-->
<DataGrid Name="DataGrid" ItemsSource="{Binding GridCollection}" >
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<ComboBox ItemsSource="{Binding SelectionOptions}">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Caption, Mode=TwoWay}" Value="ShowComboBox">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我希望能够动态更新 DataGrid 列单元格模板以显示组合框。
我尝试通过添加绑定到 DataTable 列(“Caption”)属性的 DataTrigger 来实现此目的,然后相应地更新组合框的 Visibility。
我的理解是这种情况下的DataContext就是DataTable的Columns。
我已尝试设置 DataTable 列的“Caption”属性以匹配 DataTrigger(“ShowComboBox”)中指定的值:
ViewModel.GridCollection.Columns[index].Caption = "ShowComboBox";
在确认这行代码正在执行并且 Caption 属性正在更新之后,仍然没有对 DataGrid 进行任何更改。没有列显示组合框。
我不确定是绑定有问题,还是其他问题。
感谢任何帮助!
【问题讨论】: