DataGridComboBoxes显示组合框选项,但不显示文本
本文关键字:显示 文本 选项 组合 DataGridComboBoxes | 更新日期: 2023-09-27 18:28:08
我的应用程序有两个WPF 4 DataGrids。第一个允许用户指定一个或多个配置文件。第二个表应该有一列,用户可以在其中从第一个表中选择一个条目(按名称选择)。
我选择在第二个表中使用DataGridComboBoxColumn来列出第一个表中的行(并按名称显示它们)。
我已经实现了如下WPF数据网格:
<DataGrid x:Name="TimePeriodDataGrid" Grid.RowSpan="2" Margin="0 5 5 0"
ItemsSource="{Binding TimePeriodCollection}"
SelectionChanged="TimePeriodDataGrid_SelectionChanged"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="True"
CanUserReorderColumns="False"
CanUserResizeColumns="True"
CanUserResizeRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Year" Binding="{Binding Year}"/>
<DataGridTextColumn Header="Start Date" Binding="{Binding Path=Start, StringFormat={}{0:MMMM d}}" />
<DataGridTextColumn Header="End Date" Binding="{Binding Path=End, StringFormat={}{0:MMMM d}}" />
<DataGridComboBoxColumn Header="Configuration File"
SelectedItemBinding="{Binding ConfigFile.Name}"
TextBinding="{Binding ConfigFile.Name}"
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=ConfigFileCollection, Mode=OneWay}" />
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
当组合框未处于活动状态时,组合框列中不会显示任何文本我的印象是SelectedItemBinding和TextBinding之间的区别。然而,SelectedItemBinding似乎工作得很好(单击组合框激活它会显示正确的值)。它们有完全相同的DataContext和Binding,所以我不确定其中一个是如何工作的,另一个不是。
此外,控制台中没有指示TextBinding出错的通知。
这与我声明了EditingElementStyle而没有声明ElementStyle这一事实有关吗?(如果是,我该如何设置TextBlockComboBox.Text,因为它似乎受到WPF的保护?)
关于我可能缺少的东西,还有其他建议吗?
EDIT 17:23 EDT:我删除了TextBinding条目,我看到TextBinding是当组合框在屏幕上时显示的内容,但在没有下拉选项列表的情况下被"折叠"。这显示正确。
因此,我的问题是,当光标不在字段附近时,使用什么属性来指示字段的值?当我单击DataGrid单元格以显示组合框时,会填充正确的值。但当单元格没有被选中时,我应该会看到这个值。也许我很天真,但我认为当这个专栏作为一个专注的组合框不活跃时,它应该以某种方式显示它的价值。