2012-04-17 28 views
1

我有一個控制(這裏:DataGridSelectorControl)一個DataGrid,我想創建它使用coulmns ItemTemplate.actually我想要做這樣的事情是:如何使用ItemsControl分配<DataGrid.Columns>?

<DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" > 
       <DataGrid.Columns> 
       <ItemsControl ItemsSource="{Binding DataGridColumnItems}"> 
        <ItemsControl.ItemsPanel> 
         <ItemsPanelTemplate> 
          <StackPanel Orientation="Horizontal" /> 
         </ItemsPanelTemplate> 
        </ItemsControl.ItemsPanel> 
       </ItemsControl> 
       </DataGrid.Columns> 
      </DataGrid> 

我想知道有沒有辦法使用DataGrid.Columns的ItemsControl? ,我想這樣做,因爲我想用這種控制是這樣的:(我要定義每當創建此控件的實例DataGridTextColumns)

<control:DataGridSelectorControl Grid.Row="1"> 
     <control:DataGridSelectorControl.DataGridColumnItems> 
       <DataGridTextColumn Header="نام" Width="20"></DataGridTextColumn> 
       <DataGridTextColumn Header="ParentID" Width="20"></DataGridTextColumn> 
     </control:DataGridSelectorControl.DataGridColumnItems> 
    </control:DataGridSelectorControl> 

和DataGridColumnItems是atachepropery:

public static readonly DependencyProperty DataGridTextColumnItemsProperty = DependencyProperty.Register("DataTextColumnItems", typeof(DataGridColumn), typeof(DataGridSelectorControl)); 
    public DataGridColumn DataGridColumnItems 
    { 
     get 
     { 
      return (DataGridColumn)GetValue(DataGridTextColumnItemsProperty); 
     } 
     set 
     { 
      SetValue(DataGridTextColumnItemsProperty, value); 
     } 
    } 

回答

0

DataGrid.Columns是ObservableCollection類型,請嘗試如下所示:

public static readonly DependencyProperty DataGridTextColumnItemsProperty=DependencyProperty.Register("DataTextColumnItems", typeof(ObservableCollection<DataGridColumn>), typeof(DataGridSelectorControl)))); 
    public ObservableCollection<DataGridColumn> DataGridColumnItems 
    { 
     get 
     { 
      return (ObservableCollection<DataGridColumn>)GetValue(DataGridTextColumnItemsProperty); 
     } 
     set 
     { 
      SetValue(DataGridTextColumnItemsProperty, value); 
     } 
    } 

    <DataGrid x:Name="grd" ItemsSource="{Binding Source={StaticResource theSource}}" AutoGenerateColumns="False" Columns={Binding DataGridTextColumnItems, RelativeSource={RelativeSource AncestorType=DataGridSelectorControl}}> 
      </DataGrid> 
相關問題