【发布时间】:2016-06-09 10:36:49
【问题描述】:
我设法在 TextBlock 中显示我的数组 - 每个 [element] 在单独的行中,但我想将每个 Array[index] 元素放入同一行中的单独 TextBlock 中,只要它来自同一行,所以:
- 文件被访问
- 行已排序
- 行被分割成单词
- 每一行放在单独的行上
5.行中的每个单词都被放入单独的 TextBlock 但在同一行内。
这是我的代码:
public async void ReadFile()
{
var path = @"CPU.xls";
var folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
var file = await folder.GetFileAsync(path);
var readFile = await Windows.Storage.FileIO.ReadLinesAsync(file);
foreach (string line in readFile.OrderBy(line =>
{
int lineNo;
var success = int.TryParse(line.Split(';')[4], out lineNo);
if (success) return lineNo;
return int.MaxValue;
}))
{
string[] splitLines = line.Split(';');
for (int index = 0; index < splitLines.Length; index++)
{
itemsControl.Items.Add(splitLines[index]);
}
}
}
正如您在上面看到的,我已经完成了步骤 1 到 4,不幸的是,此时每个单词都进入了不同的行。
这是我的 xaml 文件的较大部分:
<ItemsControl x:Name="itemsControl"
ItemsSource="{Binding itemsControl}"
FontSize="24">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="Auto"
Margin="0 12"
HorizontalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Column="0"
Grid.Row="0"
Orientation="Horizontal">
<TextBlock Text="{Binding }" />
</StackPanel>
<StackPanel Grid.Column="1"
Grid.Row="0"
Orientation="Horizontal">
<TextBlock Text="{Binding }" />
</StackPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我现在放了两个 TextBlocks 而不是 5 个。如何让它们各自获得不同的绑定路径来链接不同的数组元素?
---------更新---------- 我编辑了 TextBlocks,所以它们每个都指向不同的数组元素,如下所示:
<StackPanel Grid.Column="0"
Grid.Row="0"
Orientation="Horizontal">
<TextBlock Text="{Binding Path=splitLines[0]}" />
</StackPanel>
<StackPanel Grid.Column="1"
Grid.Row="0"
Orientation="Horizontal">
<TextBlock Text="{Binding Path=splitLines[1]}" />
</StackPanel>
此时我没有收到任何错误,但遗憾的是根本没有显示任何数据。为什么绑定到数组元素不起作用?
【问题讨论】:
-
在这种情况下,最好将此逻辑构建到视图模型中,并公开
List<string[]>(或List<YourClass>)的属性。然后,您可以将该属性设置为ItemsControl的ItemsSource,并根据需要将列绑定到字段。 -
请您提供一些代码好吗?