【问题标题】:Adding rows to DataGrid in Silverlight 4在 Silverlight 4 中向 DataGrid 添加行
【发布时间】:2011-12-30 08:50:26
【问题描述】:

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

截图:

.

代码如下:

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;
    }
}

没什么特别的,对吧?是的,但它不起作用,我会感谢提示和帮助。 附言。我用过this 教程。

【问题讨论】:

    标签: c# silverlight datagrid


    【解决方案1】:

    改变

    public string DefVal;

    public string DefVal {get;set;}

    绑定对成员变量不起作用,而对属性起作用

    并且您不需要在按钮单击事件中重置项目源

    this.defaultValueDataGrid.ItemsSource = this.defaultValues;

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

    【讨论】:

    • 谢谢,这解决了问题。重置是尝试不同方法的剩余部分。干杯队友
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    相关资源
    最近更新 更多