7

我有一个数据网格:

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

它不起作用

怎么能做到这一点?

4

2 回答 2

17

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

我也不会玩名字案例。WPF 非常区分大小写。避免使用单一符号名称

于 2013-02-05T12:37:19.640 回答
1

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

于 2013-02-05T12:25:48.003 回答