Пожалуйста, дайте знать, что я относительно новичок в WPF. Я создаю новый ObservableCollection
с типом моего простого класса данных и назначаю его свойству ItemsSource
моего DataGrid
. Прежде чем я перейду к своей проблеме, вот код:
XAML:
<my:DataGrid SelectionMode="Single" SelectionUnit="Cell" Height="113" HorizontalAlignment="Left" Margin="11,22,0,0" Name="addressGrid" VerticalAlignment="Top" Width="213" Background="#FFE2E2E2" AlternatingRowBackground="#FFA4CFF2" BorderBrush="#FF7C7C7C" HorizontalGridLinesBrush="White" PreviewKeyDown="addressGrid_PreviewKeyDown" CellEditEnding="addressGrid_CellEditEnding" BeginningEdit="addressGrid_BeginningEdit" PreparingCellForEdit="addressGrid_PreparingCellForEdit">
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="Name" Width="*" Binding="{Binding Path=Name}"></my:DataGridTextColumn>
<my:DataGridTextColumn Header="Value" Width="3*" Binding="{Binding Path=Value}"></my:DataGridTextColumn>
<my:DataGridTextColumn Header="Index" Visibility="Hidden" Binding="{Binding Path=Index}"></my:DataGridTextColumn>
</my:DataGrid.Columns>
</my:DataGrid>
Класс данных:
public class PropertyFields
{
public string Name { get; set; }
public object Value { get; set; }
public int Index { get; set; }
}
Население:
ObservableCollection<PropertyFields> propertyList = new ObservableCollection<PropertyFields>();
for (int i = 0; i < m_pFields.FieldCount - 1; ++i)
{
propertyList.Add(new PropertyFields() {Name = m_pFields.Field[i].AliasName, Value = DisplayedValueForRow(i), Index = i});
}
// Set ItemSource to populate grid
addressGrid.ItemsSource = propertyList;
Подробнее о методе популяции:
Я создаю это решение с помощью инфраструктуры ArcGIS, поэтому некоторые вещи не являются «системными».
m_pFields
— это объект интерфейсаIFields
, который позволяет мне хранить информацию о пространственном слое.IFields
имеет свойствоFieldCount
, которое возвращает количество полей в коллекции.DisplayedValueForRow(i)
вызывает другой метод объекта ArcGISIPropertySet.GetProperty()
и возвращает значение.
Проблема:
Все заполняется так, как должно быть, но по какой-то странной причине он повторно создает три столбца (имя, значение, индекс) снова ВВЕРХУ для заполнения столбцов, созданных в XAML - в свою очередь в итоге 2 набора одинаковых данных. Я обнаружил, что это странное поведение, поскольку я клянусь, что видел, как люди привязывались к своей сети таким образом раньше.
Что я делаю неправильно?
Редактировать
Благодаря комментарию ChrisO я узнал, что есть свойство AutoGenerateColumns, которое необходимо отключить. Ну, я чувствую себя каблуком. Спасибо!