2013-02-05 42 views
5

Tôi có một DataGrid:Ràng buộc đối với tài sản của DataContext huynh WPF

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

Trong DataContext của DataGrid có bộ sưu tập của lớp X:

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

    private string lName; 

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

Tôi muốn lname sẽ là tiêu đề của một cột cụ thể trong DataGrid

Tôi thử cách này:

<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> 

Nó không làm việc

thế nào có thể làm được điều này?

+0

'l' là gì - Vui lòng đăng ví dụ tốt hơn về ViewModel – Blachshma

+0

Tôi đã chỉnh sửa câu hỏi, nếu cần thiết thì l là một chuỗi và cũng làm việc với Thông báo ... –

Trả lời

15

Hãy thử {Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.LName}

Ngoài ra tôi sẽ không chơi với trường hợp tên. WPF là trường hợp khá nhạy cảm. Tránh sử dụng tên một biểu tượng

+0

Điều này dường như không hoạt động vì DataGridColumn không nằm ngoài cây thị giác. Vì vậy, nó không thể làm việc tra cứu. Không thể tìm thấy nguồn để liên kết với tham chiếu 'RelativeSource FindAncestor, AncestorType =' System.Windows.Window 'Đây là trên VisibilityProperty trong cột. Câu hỏi này dường như trả lời câu hỏi đó với x: Tham khảo http://stackoverflow.com/questions/22073740/binding-visibility-for-datagridcolumn-in-wpf – user99999991

+0

Làm việc như một sự quyến rũ. Cảm ơn nhiều :) – Ortund

0

Đường dẫn ràng buộc cũng phân biệt chữ hoa chữ thường. Không có tài sản lName trong DC của bạn.

Các vấn đề liên quan