У меня есть DataGrid
, который связан с DataTable
объектом. Пользователь может нажать специальную кнопку, которая будет динамически добавлять новые столбцы к этому DataTable
объекту. Свойство AutoGenerateFields
в my DataGrid
имеет значение false, поскольку каждый столбец в этом столбце имеет стиль DataTemplate
(каждая ячейка содержит несколько TextBlock
с).
Я написал следующий стиль для моего DataGrid
:
<Style TargetType="{x:Type igDP:CellValuePresenter}" x:Key="YPStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type igDP:CellValuePresenter}">
<Grid Margin="4" Visibility="{Binding Path=DataItem.YPURL, Converter={StaticResource MyVisiblityConverter}}">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.RowSpan="2" Grid.Column="0"
FontWeight="DemiBold"
FontSize="18"
VerticalAlignment="Center"
Text="{Binding Path=DataItem.LYP}" x:Name="c"/>
<TextBlock Grid.Row="0" Grid.Column="1"
Foreground="{Binding Path=DataItem.RYP, Converter={StaticResource MyColorConverter}}"
Text="{Binding Path=DataItem.RYP}"
Margin="3, 0, 0, 0"
HorizontalAlignment="Right"
VerticalAlignment="Center"/>
<StackPanel Orientation="Horizontal" VerticalAlignment="Center"
Grid.Row="0" Grid.Column="2"
HorizontalAlignment="Right"
Margin="8, 0, 0, 0">
<Image Source="../icons/icon_url.gif"
Cursor="Hand"/>
<Label Content="url"
Foreground="Blue"
Cursor="Hand"
ToolTip="{Binding Path=DataItem.YPU}"/>
</StackPanel>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Вы можете видеть, что TextBlock
s связаны с некоторыми столбцами в DataTable: DataItem.LYP, DataItem.YPU
.
Проблема в том, чтобы найти динамический способ установить эту привязку. Когда пользователь добавляет новые столбцы в связанный объект DataTable
, я создаю новый столбец в моем DataGrid
с этим стилем. Но как я могу динамически установить различные значения для Text
свойств для моего TextBlock
в этом стиле?
Например, первый столбец в моем DataGrid
привязан к Column_1, Column_2, Column_3 в DataTable
. Когда пользователь нажимает «Добавить новый столбец», программа создает 3 новых столбца в объекте DataTable
с именами «Column_4», «Column5», Column 6 »и создает новый столбец в DataGrid
с этим стилем. Я установил привязку для второго столбца к новым столбцам в DataTable
?
Большое спасибо.