【发布时间】:2012-06-02 22:36:01
【问题描述】:
我有一个包含 Curve 对象列表的 Log 对象。每条曲线都有一个 Name 属性和一个双精度数组。我希望名称位于列标题及其下方的数据中。我有一个带有 datagid 的用户控件。这是 XAML;
<UserControl x:Class="WellLab.UI.LogViewer"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="500">
<Grid>
<StackPanel Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="stackPanel1" VerticalAlignment="Stretch" Width="Auto">
<ToolBarTray Height="26" Name="toolBarTray1" Width="Auto" />
<ScrollViewer Height="Auto" Name="scrollViewer1" Width="Auto" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Visible" CanContentScroll="True" Background="#E6ABA4A4">
<DataGrid AutoGenerateColumns="True" Height="Auto" Name="logDataGrid" Width="Auto" ItemsSource="{Binding}" HorizontalAlignment="Left">
</DataGrid>
</ScrollViewer>
</StackPanel>
</Grid>
在后面的代码中我已经弄清楚了如何创建列并命名它们,但我还没有弄清楚如何绑定数据。
public partial class LogViewer
{
public LogViewer(Log log)
{
InitializeComponent();
foreach (var curve in log.Curves)
{
var data = curve.GetData();
var col = new DataGridTextColumn { Header = curve.Name };
logDataGrid.Columns.Add(col);
}
}
}
我什至不会显示我试图用来绑定数组“数据”的代码,因为没有任何东西可以接近。我确信我错过了一些简单的东西,但是在网上搜索了几个小时之后,我不得不来乞求答案。
【问题讨论】:
-
@dbaseman:这对数组没有帮助,因为没有内置逻辑来处理它们。
-
@H.B.感谢您的澄清。我误解了这个问题。
-
通常,当您将数组绑定到 DataGrid 时,数组的每个成员都是一行,而不是一列。在您的情况下,您可以有两列,一列用于名称,另一列用于数据。如果 data 本身是一个数组,那么您可以创建一个模板列以使用某种 ItemsControl 绑定到每个 Data 数组。
-
Moozhe 说得对,数组的每个成员都是一行。这就是我一直结束的,这对我不起作用。我希望最终的解决方案有两个数据网格。一个用于标题,即与曲线关联的名称,以及一个单独的数据网格,在滚动查看器中,用于保存曲线数据。曲线数据是一个双精度数组,通常包含数千个元素。
标签: wpf arrays binding datagrid