【发布时间】:2017-07-18 01:13:27
【问题描述】:
我的应用有问题。 我使用 2 TabControl(主要和次要)。 在我的子控件上,我有 2 个 TabItems。一切正常,但 DataGridTextColumn.Header 绑定仅适用于第一个 TabItem。 显示窗口时(单击按钮后)将窗口 DataContext 设置为 ViewModelClass
第二个 TabItem 没有列名。 绑定错误是:
System.Windows.Data 错误:4:找不到与引用'RelativeSource FindAncestor,AncestorType='System.Windows.Controls.DataGrid',AncestorLevel='1''的绑定源。 BindingExpression:Path=DataContext.Translations.NumberText;数据项=空;目标元素是'TextBlock'(名称='');目标属性是“文本”(类型“字符串”)
这里是代码sn-p:
<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 吗?
【问题讨论】: