私は比較的 WPF に慣れていないことをお知らせください。単純なデータ クラスの型で新しいを作成し、それを my のプロパティに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)
別の ArcGIS obj メソッドを呼び出しIPropertySet.GetProperty()
て、値を返します。
問題:
すべてが本来あるべきように入力されていますが、何らかの奇妙な理由で、 XAMLで作成されたものを入力する上で、3 つの列 (名前、値、インデックス) を再度作成しています。同じデータ。以前にこの方法でグリッドにバインドする人を見たことがあるので、これは奇妙な動作であることがわかりました。
私は何を間違っていますか?
編集
ChrisO さんのコメントのおかげで、「AutoGenerateColumns」というプロパティをオフにする必要があることがわかりました。まあ、私はかかとのように感じます。ありがとう!