C# Can';在DataGrid中看不到文本框文本
我试图在WPF中创建一个DataGrid,它将显示给定集合中项目的不同属性。到目前为止,除了一个,一切都很正常。这是我的DataGrid的一个图像,完全按照预期填充: 你可能已经看到我的问题了。每个项目都有一个与之关联的值,该值已正确绑定。但是,我无法看到任何项目的值,除非我特别单击该单元格。例如: 我希望这些值始终可见,就像C# Can';在DataGrid中看不到文本框文本,c#,wpf,datagrid,textbox,C#,Wpf,Datagrid,Textbox,我试图在WPF中创建一个DataGrid,它将显示给定集合中项目的不同属性。到目前为止,除了一个,一切都很正常。这是我的DataGrid的一个图像,完全按照预期填充: 你可能已经看到我的问题了。每个项目都有一个与之关联的值,该值已正确绑定。但是,我无法看到任何项目的值,除非我特别单击该单元格。例如: 我希望这些值始终可见,就像名称和默认值列一样,但非常重要的是,在运行时可以从DataGrid编辑该值,并且只有该值。以下是我为datagrid准备的XAML: <DataGrid Marg
名称
和默认值
列一样,但非常重要的是,在运行时可以从DataGrid编辑该值,并且只有该值。以下是我为datagrid准备的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的名称,它曾经是一个列表框,我只是从来没有想过要更改名称。所有的东西都连接得很好,我就是不明白为什么文本框文本不可见
非常感谢你能给予的任何帮助
编辑
我知道我可以通过使用CellTemplate
而不是CellEditingTemplate
来实现这一点,但后者的功能是只需单击两下即可编辑,而不必选择行。我想拥有此功能,因此如果有办法使用CellTemplate
实现此功能,请告诉我。使用CellTemplate
,我可以随时看到框:
我希望它像第二张图片一样,列的其余部分以datagrid的样式显示,而我正在编辑的单元格看起来像一个文本框 变化
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>
我使用了CellEditingTemplate
,因为它有一个功能,您必须在单元格上单击两次才能真正编辑它,否则它看起来就像其他列一样。有没有办法用CellTemplate
做到这一点?我试过了,但它似乎仍在做同样的事情。为了澄清这一点,使用这种方法,值列中的单元格有一个可见的文本框,其中包含了所有随附的设计,从而降低了datagrid的总体风格。我希望它仅在焦点位于我正在编辑的特定单元格上时才显示。这看起来很完美,唯一的问题是TextBlock不允许我编辑值。当您双击时,它应该更改为TextBox!这不适合我。我应该在代码中实现某种逻辑吗?