DataGrid绑定列表字符串显示长度但不显示字符串
Posted
技术标签:
【中文标题】DataGrid绑定列表字符串显示长度但不显示字符串【英文标题】:DataGrid Binding list string displays length but not the string 【发布时间】:2018-08-09 18:37:52 【问题描述】:我的视图模型中有一个字符串列表,该列表在运行时使用 Events.csv 等文件名填充。我将此列表作为项目源绑定到 DataGrid,但它显示字符串的长度而不是字符串.请帮忙。
不用担心 INotifyPropertyChanged 和 DATACONTEXT。 DataContext 正确设置为 此视图中的DetailedRunInformationViewModel 和其他数据已正确填充。
请在我调试时查看随附的屏幕截图。
视图模型:
public class DetailedRunInformationViewModel : RunRelatedErrors
public List<string> AllFilesGeneratedList get; set;
public DetailedRunInformationViewModel(int sessionID, RunData runData)
DisplayAllFiles();
public void DisplayAllFiles()
if (_runData != null)
if (_runData.CSVDataInDataTableFormatForEachFile != null && _runData.CSVDataInDataTableFormatForEachFile.Count > 0)
if (AllFilesGeneratedList == null)
AllFilesGeneratedList = new List<string>();
foreach(var key in _runData.CSVDataInDataTableFormatForEachFile.Keys)
AllFilesGeneratedList.Add(key);
在xml中
<DataGrid
x:Name="AllRunFiles"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="StaticResource AllControlsMargin"
ItemsSource="Binding AllFilesGeneratedList"
AutoGenerateColumns="True">
<i:Interaction.Triggers>
<i:EventTrigger
EventName="SelectionChanged">
<i:InvokeCommandAction
Command="Binding OpenSelectedFile"
CommandParameter="Binding ElementName=AllRunFiles,Path=SelectedValue"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGrid.ItemTemplate>
<DataTemplate>
<TextBlock
Text="Binding"
Style="StaticResource TextBlockHyperlinkStyle"></TextBlock>
</DataTemplate>
</DataGrid.ItemTemplate>
</DataGrid>
【问题讨论】:
是的,我想设置 ItemTemplate,因为我有一个需要应用于文本的超链接样式。 CSVDataInDataTableFormatForEachFile 是一个字典您的DataGrid
需要有一个Columns
定义,并设置为AutoGenerateColumns="False"
,这样您就可以更好地控制您的显示方式。
<DataGrid>
<i:Interaction.Triggers>
...
</i:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTemplateColumn Header="File Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="Binding"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
我也没有检查这个,但我认为您可能需要将您的 TextBlock Text="Binding"
更改为 TextBlock Text="Binding Path=."
。
【讨论】:
Binding
和 Binding Path=.
是同一个东西以上是关于DataGrid绑定列表字符串显示长度但不显示字符串的主要内容,如果未能解决你的问题,请参考以下文章
将对象列表数据绑定到 WinForms DataGridView,但不显示某些公共属性