我有一个DataGrid
,它绑定到DataTable
个对象。用户可以按一个特殊按钮,该按钮将动态地向此DataTable
对象添加新列。我AutoGenerateFields
中的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
已绑定到DataTable: DataItem.LYP, DataItem.YPU
中的某些列。
问题是找到一种动态方式来设置绑定。当用户向绑定的DataTable
对象添加新列时,我使用此样式在DataGrid
中创建了一个新列。但是,如何在此样式中为Text
动态设置TextBlock
属性的不同值?
例如,DataGrid
中的第一列绑定到DataTable
中的Column_1,Column_2,Column_3。当用户按下“添加新列”时,程序在DataTable
对象中创建3个新列,名称为“Column_4”,“Column5”,第6列“,并使用此样式在DataGrid
中创建新列。但是,如何将第二列的绑定设置为DataTable
?
非常感谢。
答案 0 :(得分:0)
现在我使用的是代码背后创建的样式。它的工作原理! 谢谢大家。