我的应用程序出现问题。 我使用2个TabControl(主和子)。 在我的子控件上有2个TabItems。它所有的工作,但DataGridTextColumn.Header绑定只适用于第一个TabItem。 当显示窗口(点击按钮后)时,将DataContext设置为ViewModelClassC#在TabControl中绑定wpf
第二个TabItem没有列名。 绑定错误是:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.DataGrid', AncestorLevel='1''. BindingExpression:Path=DataContext.Translations.NumberText; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
下面是代码片段:
<TabControl x:Name="ovTcMain">
<TabItem Header="{Binding Translations.CodeBooksText }" TabIndex="0">
<Grid Style="{StaticResource MainGrid}">
<Grid.RowDefinitions>
<RowDefinition Height="6*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<TabControl x:Name="ovTcOptions" Grid.Row="0" SelectedIndex="{Binding Path=SelectedIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" >
<TabItem Header="{Binding Translations.ResortsText}" TabIndex="0" >
<DataGrid x:Name="ovTiCostCenters"
ItemsSource="{Binding CodeBooks[CostCenter], Mode=TwoWay}"
SelectedItem="{Binding SelectedCostCenter, Mode=TwoWay}"
ColumnWidth="*" AutoGenerateColumns="False" HorizontalAlignment="Stretch"
Visibility="Visible" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Width="auto">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.Translations.NumberText, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=DescriptionTerm}" Width="auto">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.Translations.TermText, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</TabItem>
<TabItem Header="{Binding Translations.BuildingsText}" TabIndex="1" >
<DataGrid x:Name="ovTiBuildings"
ItemsSource="{Binding CodeBooks[Building], Mode=TwoWay}"
SelectedItem="{Binding SelectedBuilding, Mode=TwoWay}"
ColumnWidth="*" AutoGenerateColumns="False" HorizontalAlignment="Stretch"
Visibility="Visible" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}" Width="auto">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.Translations.NumberText, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=DescriptionTerm}" Width="auto">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding DataContext.Translations.TermText, RelativeSource={RelativeSource AncestorType=DataGrid}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</TabItem>
你能帮助我如何正确绑定的HeaderText?
阅读这个答案。 http://stackoverflow.com/a/15550109/2672863 –