我正在使用DevExpress for WPF,遵循MVVM模式。在视图中,我有一个动态填充的tabcontrol和一个动态填充的devexpress gridcontrol。我需要做的是更改gridcontrols列名称,该名称部分基于tabitem标题。例如,如果选项卡项标题是“tabitem1HeaderName”,那么我希望网格列名称为“tabitem1HeaderName Grid Column 1”。为了清楚起见,我将使用标签项标题并将其用作列名。我玩了一个样本,它在已经创建的标签中执行此操作:
<StackPanel>
<TabControl>
<TabItem Header="2015-01" Name="Tab2">
<TextBlock Text="{Binding SelectedItem.Header, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, StringFormat='Number Format: {0}' }" />
</TabItem>
<TabItem Header="world" Name="Tab3">
<TextBlock Text="{Binding SelectedItem.Header, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}, StringFormat='Number Format: {0}' }" />
</TabItem>
</TabControl>
</StackPanel>
我想知道如何在运行时填充的tabcontrol和网格中模仿此功能
<TabControl Grid.Row="1" ItemsSource="{Binding Workspaces}" Height="Auto" Background="Transparent" x:Name="Tabs" >
<TabControl.ContentTemplate>
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="725" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1600" />
</Grid.ColumnDefinitions>
<dxg:GridControl Grid.Row="0" x:Name="Grid" ItemsSource="{Binding Data}" >
<dxgcore:GridControl.Columns>
<!--<dxg:GridColumn Name="Month1" FieldName="Month01" Header="01" Visible="True" AllowEditing="False" HorizontalHeaderContentAlignment="Center">-->
<dxg:GridColumn Name="Month1" FieldName="Month01" Header="{Binding SelectedItem.Header, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Visible="True" AllowEditing="False" HorizontalHeaderContentAlignment="Center" >
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings HorizontalContentAlignment="Right" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxgcore:GridControl.Columns>
<dxgcore:GridControl.View>
<dxgcore:TableView x:Name="View"
AllowEditing="False"
AllowBestFit="True"
AllowMoving="True"
AllowColumnFiltering="True"
IsColumnMenuEnabled="True"
ShowGroupPanel="False"
ShowAutoFilterRow="True"
AutoWidth="False"
NavigationStyle="Cell"
VerticalScrollbarVisibility="Visible"
HorizontalScrollbarVisibility="Visible"
</dxgcore:TableView>
</dxgcore:GridControl.View>
</dxg:GridControl>
</Grid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>