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单元格以显示组合框时,会填充正确的值。但当单元格没有被选中时,我应该会看到这个值。也许我很天真,但我认为当这个专栏作为一个专注的组合框不活跃时,它应该以某种方式显示它的价值。

DataGridComboBoxes显示组合框选项,但不显示文本

因为只有EditingElementStyle具有ItemsSource。当你想要ComboBox的基本编辑功能时,为什么你有一个单独的EditingElementStyle?