将datagrid绑定到Silverlight中的对象集合

时间:2011-12-15 03:15:33

标签: silverlight

我知道我做到了并且有效。现在,我正在做同样的事情而事实并非如此。我错过了什么? 我创建了一个新的测试解决方案并添加了以下代码:

XAML:

 <Grid x:Name="LayoutRoot" Background="White">
        <data:DataGrid AutoGenerateColumns="False" Height="200" HorizontalAlignment="Left" Margin="98,31,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200">
            <data:DataGrid.Columns>
                <data:DataGridTextColumn Binding="{Binding TestProperty}" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" x:Name="d" />
            </data:DataGrid.Columns>
        </data:DataGrid>
    </Grid>

C#:

namespace SilverlightApplication1
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();            
                dataGrid1.ItemsSource = null;
                List<TestClass> lst = new List<TestClass>();
                TestClass tc = new TestClass();
                tc.TestProperty = "HEllo";
                lst.Add(tc);
                dataGrid1.ItemsSource = lst;
            }
        }
        class TestClass
        {
            public String TestProperty { get; set; }
        }
    }

实际上没有其他内容了。我按下F5并看到一个有一列和一行的网格(如预期的那样),但该行是空的!我期待“HEllo”在那里。 我觉得有一些基本的东西,但无法弄清楚是什么。今天整天让我疯狂!

1 个答案:

答案 0 :(得分:1)

我会在这里做两件事:

公开TestClass(这可能会解决问题):

public class TestClass
{
    public String TestProperty { get; set; }
}

静态绑定datagrid:

public MainPage()
{
    InitializeComponent();   

    DataContext = this;         

    MyItems = ... create the list ...
}

public ObservableCollection<TestClass> MyItems { get; set; }



<Grid x:Name="LayoutRoot" Background="White">
    <data:DataGrid ItemsSource="{Binding MyItems}" ...etc... Name="dataGrid1">
        <data:DataGrid.Columns>
            <data:DataGridTextColumn Binding="{Binding TestProperty}" Width="Auto" x:Name="d" />
        </data:DataGrid.Columns>
    </data:DataGrid>
</Grid>