在 DataGrid 中看不到文本框文本

Can't see Textbox text in DataGrid

我正在尝试在 WPF 中创建一个 DataGrid,它将显示给定集合中项目的不同属性。到目前为止,一切正常,除了一个。这是我的 DataGrid 的图像,它按预期完全填充:

你可能已经看到我的问题了。每个项目都有一个与之关联的值,该值已正确绑定。但是,除非我专门单击该单元格,否则我看不到任何项目的值。例如:

我希望这些值始终可见,就像 NameDefault Value 列一样,但是非常重要的是,该值,而且只能是该值,可以从运行时的数据网格。这是我为数据网格准备的 XAML:

<DataGrid Margin="20" AutoGenerateColumns="False" ItemsSource="{Binding ConfigurationParameterCollection}" Name="MasterListBox" ScrollViewer.VerticalScrollBarVisibility="Visible" SelectionChanged="MasterListBox_SelectionChanged" AlternationCount="2" DockPanel.Dock="Top" HorizontalAlignment="Center" Width="1000" >
        <DataGrid.Columns>

            <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>

            <!-- Begin Problem Area-->

            <DataGridTemplateColumn Header="Value">
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <TextBox Text="{Binding Path=Value, Mode=TwoWay}" />
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>

            <!-- End Problem Area-->

            <DataGridTextColumn  Header="Default Value" Binding="{Binding DefaultValue}"/>


        </DataGrid.Columns>
    </DataGrid>

不用担心 DataGrid 的名称,它曾经是一个 ListBox,我从来没有费心去更改名称。一切都完美地连接起来,我只是想不通为什么 TextBox 文本不可见。

非常感谢您提供的任何帮助。

编辑

我知道我可以使用 CellTemplate 而不是 CellEditingTemplate 来实现这一点,但后者的特点是只需单击两次即可进行编辑,否则会选择该行。我想要这个功能,所以如果有办法用 CellTemplate 做到这一点,请告诉我。使用 CellTemplate,我总是看到框:

我希望它像第二张图片中那样,其中列的其余部分以数据网格的样式显示,而我正在编辑的单元格看起来像一个文本框。

改变 DataGridTemplateColumn.CellEditingTemplate 到 DataGridTemplateColumn.CellTemplate


您可以指定显示模板和编辑模板...

        <DataGridTemplateColumn Header="Value">
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Path=Value, Mode=TwoWay}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Value, Mode=TwoWay}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>