Добавление строк в DataGrid в Silverlight 4 - PullRequest
1 голос
/ 30 декабря 2011

Я разрабатываю небольшое приложение, которое требует добавления пользовательских значений в сетку. Проблема в том, что даже если они добавляются нормально (я проверял в отладчике), они не отображаются должным образом в сетке.

Скриншот:

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. Я использовал этот учебник.

1 Ответ

2 голосов
/ 30 декабря 2011

изменение

public string DefVal;

до

public string DefVal {get;set;}

Привязка не работает с переменными-членами, она работает со свойствами

и вам не нужно сбрасывать источник предметов внутри события нажатия кнопки

this.defaultValueDataGrid.ItemsSource = this.defaultValues;

Изменения в наблюдаемой коллекции непосредственно изменят DataGrid

...