WPF DataGrid绑定到string.Length而不是字符串文本

时间:2014-08-28 19:31:18

标签: wpf vb.net binding datagrid

我是WPF的新手,我真的想尽可能地自己弄明白......

我已创建了我的第一个DataGrid控件,并且我尝试使用以下字符串列表填充它:

<UserControl x:Class="DataGridTest"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid Style="{StaticResource ContentRoot}">
        <DataGrid Name="MyDataGrid" ItemsSource="{Binding}" HorizontalAlignment="Stretch" Height="500"/>
    </Grid>
</UserControl>

Private Sub DataGridTest_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
        Dim StringCollection As List(Of String) = New List(Of String)
        StringCollection.Add("Test")
        StringCollection.Add("Test1")
        StringCollection.Add("Test2")
        StringCollection.Add("Test3")
        StringCollection.Add("Test4")
        MyDataGrid.DataContext = StringCollection

    End Sub

然而,它实际上填充了标题&#34;长度&#34;和值作为字符串的长度。为什么不填充字符串值呢?

很明显,我在这里遗漏了一些基本的东西,但我不能为我的生活弄清楚它是什么。

提前致谢!

1 个答案:

答案 0 :(得分:12)

因为默认情况下DataGrid会自动生成给定项类的列,所以它会在String类中搜索可以转换为列的属性。您可以通过创建自己的列并关闭AutoGenerateColumns

来避免这种情况
<DataGrid Name="MyDataGrid" ItemsSource="{Binding}" ... AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding}" Header="Something"/>
    </DataGrid.Columns>
</DataGrid>