2013-02-05 7 views
5
между родителями

У меня есть DataGrid:Привязка к свойству DataContext WPF

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

В DataContext в DataGrid есть коллекция класса 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 и также работа с Notify ... –

ответ

15

Попробуйте {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.LName}

Кроме того, я не играл бы с делами именем. WPF довольно чувствителен к случаю. Избегайте использования имен с одним символом

+0

Это похоже, не работает, потому что DataGridColumn не отделен визуальным деревом. Поэтому он не может выполнить поиск. Невозможно найти источник для привязки со ссылкой 'RelativeSource FindAncestor, AncestorType =' System.Windows.Window 'Это находится в VisibilityProperty в столбце. Этот вопрос, кажется, отвечает на него с помощью x: Reference http://stackoverflow.com/questions/22073740/binding-visibility-for-datagridcolumn-in-wpf – user99999991

+0

Работал как шарм. Большое спасибо :) – Ortund

0

Связывающие пути также чувствительны к регистру. В вашем DC нет собственности lName.

Смежные вопросы