2016-05-12 28 views
1

有什麼方法可以將Datagrid的列提供給GridViewRowPresenterGridViewRowPresenter使用Datagrid的列

它不能直接做,因爲一個使用DataGridColumn和其他GridViewColumn所以這不起作用:

<GridViewRowPresenter Columns="{Binding ElementName=myDataGrid, Path=Columns, Mode=OneWay}" /> 

回答

1

我沒有嘗試這樣做,但這樣的事情應該工作:

public class MyGridViewRowPresenter : GridViewRowPresenter 
{ 
    public static readonly DependencyProperty NumberOfColumnsProperty = DependencyProperty.Register("NumberOfColumns", typeof(int), typeof(MyGridViewRowPresenter), new PropertyMetadata(0)); 

    public int NumberOfColumns 
    { 
     get { return (int)GetValue(NumberOfColumnsProperty); } 
     set { SetValue(NumberOfColumnsProperty, value); } 
    } 

    public override void EndInit() 
    { 
     base.EndInit(); 
     for (var i = 0; i < NumberOfColumns; i++) 
     { 
      Columns.Add(new GridViewColumn()); 
     } 
    } 
} 

使用

<local:MyGridViewRowPresenter NumberOfColumns="{Binding ElementName=myDataGrid, Path=Columns.Count, Mode=OneWay}" /> 

我做類似的東西標準網格,所以,而不是做行或列定義,然後添加列和行,我只是說列= somenumber,這將做到這一點。

+0

我猜MyColumns(xaml)實際上是NumberOfColumns?雖然這可以工作,但它遠離我想要的。如果我調整DataGrid中的一列的大小,我需要GridViewRowPresenter中的列同時調整大小。你明白了。 – Natxo

+0

是的,我糾正它。我不知道該怎麼做,我腦海中有些東西,但它會很難看:)。 – adminSoftDK