2013-02-05 112 views
5

的財產我有一個DataGrid:綁定到DataContext的父母與WPF

<DataGrid x:Name="DG" ItemsSource="{Binding}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
      <DataGridTextColumn Header="?" Binding="{Binding l}"> 
      </DataGridTextColumn> 
    </DataGrid.Columns> 
    </DataGrid> 

在DataGrid中的DataContext的有X類的集合:

public ObservableCollection<xxx> col{ get; set; }// = DataContext of DG 

    private string lName; 

    public string LName 
    { 
     get { return lName; } 
     set 
     { 
      lName= value; 
      NotifyPropertyChanged("LName"); 
     } 
    } 

我想LNAME將是頭在DataGrid中特定列的

我試着這樣說:

<DataGridTextColumn Binding="{Binding l}">//l=prop of xxx class that contains the collection 
           <DataGridTextColumn.HeaderTemplate> 
            <DataTemplate> 
             <TextBlock Text="{Binding DataContext.LName, 
         RelativeSource={RelativeSource AncestorType=DataGrid}}"/> 
            </DataTemplate> 
           </DataGridTextColumn.HeaderTemplate> 
          </DataGridTextColumn> 

它沒有工作

該怎麼辦?

+0

什麼是'l' - 請發佈您的ViewModel的更好的例子 – Blachshma

+0

我編輯了這個問題,如果它是如此必要,那麼l是一個字符串,並且還可以使用通知... –

回答

15

嘗試{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.LName}

我也不會與名稱的情況下打球。 WPF非常具有案例敏感性。避免使用單符號名稱

+0

This似乎不起作用,因爲DataGridColumn不是可視化樹的一部分。所以它不能進行查找。找不到與參考綁定的源'RelativeSource FindAncestor,AncestorType ='System.Windows.Window'這是在VisibilityProperty列中。 這個問題似乎回答了它與X:參考http://stackoverflow.com/questions/22073740/binding-visibility-for-datagridcolumn-in-wpf – user99999991

+0

工作就像一個魅力。非常感謝 :) – Ortund

0

綁定路徑也區分大小寫。您的DC沒有財產lName