绑定到datacontext parent-WPF的属性

时间:2013-02-05 12:18:55

标签: wpf binding datagrid

我有一个DataGrid:

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

无效

怎么办呢?

2 个答案:

答案 0 :(得分:16)

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

此外,我不会玩名字案件。 WPF非常具有案例敏感性。避免使用单符号名称

答案 1 :(得分:0)

绑定路径也区分大小写。您的DC中没有属性lName