1

コントロールにデータグリッドがあり(ここでは:DataGridSelectorControl)、ItemTemplate.actually を使用して列を作成したいのですが、実際には次のようなことをしたいと考えています:

  <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 はアタッシュ プロパティです。

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

1 に答える 1

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> 
于 2012-04-17T10:46:35.760 に答える