1

正常に動作する次の GridView コントロールがあります。

<DataGrid IsReadOnly="true"
          ItemsSource="{Binding CiList}"
          AutoGenerateColumns="True"
          SelectedItem="{Binding Path=CI}" />

DataGridTextColumnを設定AutoGenerateColumns="False"して手動で追加すると、次のようになります。

<DataGrid IsReadOnly="true"
          ItemsSource="{Binding CiList}"
          AutoGenerateColumns="False"
          AlternatingRowBackground="Gainsboro"
          AlternationCount="2"
          Height="150"
          SelectedItem="{Binding Path=CI}">
  <DataGridTextColumn Header="Name"
                      Binding="{Binding Path=Name}" />
</DataGrid>

「ItemsSource を使用する前に、Items コレクションを空にする必要があります。」という InvalidOperationException が発生します。</p>

私は間違って何をしていますか? ありがとう!

編集: 私は MVVM パターンを使用しています。ウィンドウの DataContext は私の ViewModel であり、その CiList はプロパティです。

4

3 に答える 3

2

Columns タグをグリッドに追加する必要があります

<DataGrid..>
   <DataGrid.Columns>
      <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
   </DataGridColumns>
...
于 2013-10-04T15:30:37.490 に答える
2

内で列を定義する必要がありますDataGrid.Columns

<DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro"  AlternationCount="2" Height="150" SelectedItem="{Binding Path=CI}">
      <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
      </DataGrid.Columns>
</DataGrid>
于 2013-10-04T15:30:27.803 に答える
1

以下のように DataGrid.Columns に列を配置します。

<DataGrid IsReadOnly="true" ItemsSource="{Binding CiList}" AutoGenerateColumns="False" AlternatingRowBackground="Gainsboro"  AlternationCount="2" Height="150" SelectedItem="{Binding Path=CI}">
  <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" />
  </DataGrid.Columns>
</DataGrid>
于 2013-10-04T15:31:14.140 に答える