【发布时间】: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 是一个字典
。每个字符串键类似于“Events.csv”、“A1_Rt_234.csv”等 -
我保留了一个断点,它清楚地显示了一个字符串而不是计数。
-
无论如何,如果我使用 ItemsControl 而不是 DataGrid,它就可以正常工作。