7

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

それは動かなかった

どうすればこれを行うことができますか?

4

2 に答える 2

17

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

また、名前のケースで遊ぶことはありません。WPF では大文字と小文字が区別されます。1 つのシンボル名の使用を避ける

于 2013-02-05T12:37:19.640 に答える
1

バインド パスも大文字と小文字が区別されます。lNameDC にはプロパティがありません。

于 2013-02-05T12:25:48.003 に答える