1

DataGridユーザーがセルにデータを入力できるようにすることを主な目的とする があります。

ただし、このグリッドの最初のフィールドにはリストの内容が表示されます。

1 つの列だけにデータ ソースを設定するにはどうすればよいですか?

編集:私はこのような何かを達成したい:

ここに画像の説明を入力

4

2 に答える 2

1

私のコメントに加えて、1つの簡単な方法は、itemssourceコレクションをラップし、すべてのアイテムのリストを、期待するデータで追加することです。

良い点は、最初の列に別のソースを設定する必要はなく、新しいリストプロパティにバインドするだけです。

編集:

私はあなたの問題を抱えていると思います。

グリッドのitemssourceがあるとします。

List<MyObject> _list;

myobjectには、Asc / Desc、GroupBy、Having、Dispplayorderプロパティが含まれています。

したがって、MyObjectWrapperを作成し、Fieldプロパティを追加します

  public class MyObjectWrapper
  {
     public MyObject WrappedOject {get;set;}
     public string Fields {get;set}
  }

あなたは新しいものになってしまいます

 List<MyObjectWrapper> _wrapperlist;

これらのコレクションには、表示する必要のあるすべての情報が含まれています。

于 2012-10-26T13:58:44.067 に答える
0

で独自のものを指定DataGridTemplateColumnし、その列に配置しようとしているものにDataGrid.Columnsを設定します。DataGridTemplateColumn.CellTemplate

たとえば、ComboBox他のフィールドのリストを指すようにしたい場合:

<DataGrid.Columns>
    <DataGridTemplateColumn Header="Fields">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <ComboBox ItemsSource="{Binding ElementName=MyWindow, Path=DataContext.SomeCategoryList}"
                          SelectedItem="{Binding SomePropertyOnDataItemInRow}" />
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

SomeCategoryListonというプロパティを使用しMyWindow.DataContextていますが、フィールド リストが保存されている場所を指すようにバインディングを設定できます。

于 2012-10-26T15:40:43.060 に答える