在Silverlight 4中向DataGrid添加行

时间:2011-12-30 08:50:26

标签: c# silverlight datagrid

我正在开发一个小应用程序,需要将用户定义的值添加到网格中。问题是,即使认为它们添加正常(我已经检查过调试器)它们在网格中没有正确显示。

截图:

SCREEN SHOT

以下是代码:

XAML:

<sdk:DataGrid x:Name="defaultValueDataGrid" AutoGenerateColumns="False" Height="150" Margin="0,0,10,0">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTextColumn x:Name="valColumn" Binding="{Binding DefVal, Mode=OneWay}" IsReadOnly="True" Header="SomeHeader" Width="*" />
    </sdk:DataGrid.Columns>
</sdk:DataGrid>

ItemSource集合和容器类的定义:

public ObservableCollection<DefaultValue> defaultValues;

//Class:
public class DefaultValue
{
    public string DefVal;

    public DefaultValue(string val)
    {
        this.DefVal = val;
    }
}

页面构造函数中的初始化:

    this.defaultValues = new ObservableCollection<DefaultValue>();
    this.defaultValueDataGrid.ItemsSource = this.defaultValues;

最后添加值的函数:

private void AddNewDefaultValueBtn_Click(object sender, RoutedEventArgs e)
{
    if (!string.IsNullOrEmpty(this.newDefaultValueTxtBx.Text))
    {
        this.defaultValues.Add(new DefaultValue(this.newDefaultValueTxtBx.Text));
        this.defaultValueDataGrid.ItemsSource = this.defaultValues;
    }
}

没什么特别的,对吗?是的,但它不起作用,我会很感激提示和帮助。 PS。我使用过this教程。

1 个答案:

答案 0 :(得分:2)

更改

public string DefVal;

public string DefVal {get;set;}

绑定不适用于属性

的成员变量

并且您无需重置按钮点击事件

中的项目来源

this.defaultValueDataGrid.ItemsSource = this.defaultValues;

可观察集合的变化将直接改变DataGrid