【发布时间】:2015-05-13 12:27:38
【问题描述】:
我在 SO 上潜伏了很长时间,直到最近才决定建立一个帐户。我已经花了很多时间试图解决这个我一直没有问的问题,但我在这里。
我想要完成的事情:
我有一个字符串列表,例如:Mango、Banana、Melon(我们称之为水果),我想将其显示为 XAML (WPF) 中的表格,它在左侧显示为行值,并且右侧将是组合框,允许用户选择一个值。我目前被困在这个问题的显示部分。我决定使用 DataGrid 来显示列表,后面的代码会做数据绑定。
这是其中的 XAML 部分:
<DataGrid x:Name="FruitDataGrid" Height="265" VerticalAlignment="Center" Margin="-7,8,-2,-6" HorizontalAlignment="Left" Width="1188" AutoGenerateColumns="False">
<!-- If AutoGenerateColumns was true only the length is displayed.-->
<DataGrid.Columns>
<DataGridTextColumn x:Name="fruitsDisplay" Header="Fruits" MinWidth="450" IsReadOnly="True" />
<DataGridComboBoxColumn Header="Number of Boxes" MinWidth ="200" CanUserResize="True" Width="*"></DataGridComboBoxColumn>
</DataGrid.Columns>
到目前为止,Code Behind 非常简单,经过多次尝试,这是最近的一次。
private void populateFruitList()
{
FruitDataGrid.DataContext = fruitDataTable;
//Binds a datatable instance to the datagrid, does not display anything.
}
我一直在尝试的:
将字符串列表转换为 Observable 集合或 Enumerable,然后执行 FruitDataGrid.itemsource = fruitsObservable;
上述方法有效,只是它只会显示每个字符串值的长度(如果 autogeneratecolumns 为真),这不是我想要的。如果 autogeneratecolumns 为假,那么我可以看到显示的行,但看不到字符串值。
我也尝试使用 DataView 或 DataGridView 但我未能在 XAML 中定义它,VS2012 说没有这样的东西。
我一直在尝试像MSDN Article 所说的那样进行数据绑定,但是 VS2012 从未设法正确绑定到列表。
然后我尝试将我的列表更改为数据表并[使用此处指定的数据网格视图,但 XAML 再次告诉我它不是有效的类][2]。我也知道 datagridview 可能会对性能产生影响,但此时我只想真正显示一个表格。
我还看到一些教程使用 DataGrid.datasource 方法,但这不在我想要的 DataGrid 中,我认为它是一个不同的类? (我尝试使用的 DataGrid 是 System.Windows.Controls.DataGrid,另一个在 Windows 窗体中 [如图所示][3])
再次感谢您抽出宝贵时间对此进行调查。
编辑
尝试以这种方式绑定到 XAML 中的列表:
<DataGrid x:Name="FruitDataGrid" Height="265" VerticalAlignment="Center" Margin="-7,8,-2,-6" HorizontalAlignment="Left" Width="1188" AutoGenerateColumns="False" ItemsSource="fruitDataList">
我在 XAML 中收到错误“IEnumerable 的类型转换器不支持从字符串转换”,我认为这是因为我做错了。不过,该表现在显示了很多空行。
尝试 ItemSource="{Binding fruitDataList}"(其中fruitDataList 是一个列表)会产生一个空白表,并在 VS 中出现错误 for BindingExpression 路径错误。
【问题讨论】:
-
不能发布超过 2 个链接:[2]:dotnetperls.com/datagridview [3]:msdn.microsoft.com/en-us/library/…
-
发布您为网格提供 itemsSource 的代码,您是否尝试在 xaml 中这样做?
-
@Muds 刚刚尝试过,并更新了问题。我似乎无法从 xaml 正确绑定。
标签: c# wpf xaml datagrid datatable