7

Xamlでは、データテンプレートを作成するときに、DataTemplateが適用されるアイテムのタイプを次のように指定できます。

<DataTemplate DataType="{x:Type Vehicle}">
  <!-- do some stuff with the Vehicle class's properties -->
</DataTemplate>

DataGridを作成するときに同じことを実行できるようにしたいのですが、DataType属性のオプションではありません。

<DataGrid ItemsSource="{Binding Cars}" DataType="{x:Type Vehicle}">
     <!-- Create columns that bind to the Vehicle class's properties -->
</DataGrid>

かなりくだらない回避策は、各列で個別に行うことです。

<DataGrid ItemsSource="{Binding Cars}" DataType="{x:Type Vehicle}">
  <DataGrid.Columns>
    <DataGridTemplateColumn>
      <DataGridTemplateColumn.Header />
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate DataType="{x:Type Vehicle}">
          <!-- bind to a Vehicle class property -->
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTemplateColumn>
      <DataGridTemplateColumn.Header />
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate DataType="{x:Type Vehicle}">
          <!-- bind to a Vehicle class property -->
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTemplateColumn>
      <DataGridTemplateColumn.Header />
      <DataGridTemplateColumn.CellTemplate>
        <DataTemplate DataType="{x:Type Vehicle}">
          <!-- bind to a Vehicle class property -->
        </DataTemplate>
      </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
  </DataGrid.Columns>
</DataGrid>

私が知らないこれを行うためのより良い方法はありますか?そうしないと、ReSharperのさまざまな部分がうまく対応できません。

4

2 に答える 2

1

これを試して:

<DataGrid ItemsSource="{Binding Cars}"
          d:DesignSource="{d:DesignInstance Type={x:Type Vehicle}, CreateList=True}">
     <!-- Create columns that bind to the Vehicle class's properties -->
</DataGrid>
于 2012-12-14T12:49:00.497 に答える