我试图在WPF中制作一个DataGrid,以显示给定集合中各项的不同属性。到目前为止,除其中一项外,其他所有功能均正常运行。这是我的DataGrid的图像,它已按预期完全填充:
您可能已经看到我的问题了。每个项目都有一个与之关联的值,该值已正确绑定。但是,除非明确单击该单元格,否则看不到任何项目的值。例如:
我希望这些值在任何时候都是可见的,就像Name
和Default Value
列一样,但是非常重要的一点是,该值(仅该值)是可在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的名称,它曾经是一个ListBox,而我只是从不费心更改名称。一切都完美地链接在一起,我只是想不通为什么TextBox文本不可见。
非常感谢您能提供的任何帮助。
编辑
我知道我可以使用CellTemplate
代替CellEditingTemplate
来实现这一点,但是后者的功能是仅单击两次即可编辑,否则选择该行。我想拥有此功能,因此,如果可以使用CellTemplate
进行此操作,请告诉我。使用CellTemplate
,我随时都可以看到这些框:
我希望它看起来像第二张图片,其中该列的其余部分使用datagrid样式显示,而我正在编辑的单元格看起来像一个文本框。
答案 0 :(得分:1)
更改 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>