2017-10-19 137 views
0

我有一個DataGrid。非常簡單:將項目插入列表<string>到DataGrid-Column-Index 2中

<DataGrid Width="320" Height="340" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" Grid.RowSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Filter" Width="Auto"/> 
      <DataGridTextColumn Header="Name" Width="*"/> 
     </DataGrid.Columns> 
    </DataGrid> 

所以現在我需要在第二列中插入一個字符串列表。 我一直在尋找一個不錯的解決方案,但找不到一個好的解決方案。我想過用綁定的方式來做這件事,但不能讓它工作來填充第二列。

在第一列中,我想把複選框放在每個字符串Item的前面。

感謝提前:)

+0

你的意思是你想要一行的第二列來保存字符串列表嗎? – Redouane

+0

@Redouane是的,列表中有大約70個條目。這些應顯示在第二列標題下的行中。 – Niclas

回答

0

您可以手動創建列和第二列中使用DataGridTemplateColumn並提供(即繼承它或任何控制),一個ItemsControl作爲其DataGridTemplateColumn.CellTemplate這樣的:

<DataGrid Margin="4" AutoGenerateColumns="False" ItemsSource="{Binding Models}"> 
     <DataGrid.Columns> 
      <DataGridCheckBoxColumn Header="CheckBox Column Header" Binding="{Binding BindToBooleanPropertyFromModel}"></DataGridCheckBoxColumn> 
      <DataGridTemplateColumn Header="List of strings"> 
       <DataGridTemplateColumn.CellTemplate> 
        <ItemContainerTemplate> 
         <ItemsControl ItemsSource="{Binding BindToListPropertyFromModel}"> 
         </ItemsControl> 
        </ItemContainerTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
     </DataGrid.Columns> 
    </DataGrid> 

我使用BindToBooleanPropertyFromModelBindToListPropertyFromModel作爲佔位符,分別指定類型爲bool的財產的名稱和類型爲IEnumrable<T>的財產的名稱。

+0

嘿,謝謝你。最後一個問題:您能否向我解釋我如何正確創建綁定? XAML部分很清晰,但我必須做什麼?我只是把方法(屬性)放在ItemSource後面,它的工作原理是什麼?或者我必須在我的.cs文件中執行其他操作? – Niclas

+0

你使用ViewModel和Models模式嗎?你用什麼數據源來填充'DataGrid'? – Redouane

+1

我想出了thx :) – Niclas