我有一個DataGrid
,它綁定到一個DataTable
對象。用戶可以按一個特殊的按鈕,這將動態地添加新的列到這個DataTable
對象。 我的DataGrid
中的AutoGenerateFields
屬性設置爲false,因爲其中的每列都是帶有DataTemplate
(每個單元包含若干TextBlock
s)的樣式列。用數據綁定動態創建/修改樣式的方法
我寫了下面的風格我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
中創建了一個新列。但是,如何以這種風格爲我的TextBlock
動態設置Text
屬性的不同值?
例如,我的DataGrid
中的第一列綁定到DataTable
中的Column_1,Column_2,Column_3。當用戶按下「添加新列」時,程序在名稱爲「Column_4」,「Column5」,第6列「DataTable
」對象中創建3個新列,並使用此樣式在DataGrid
中創建新列。但是,如何設置綁定第二列到新列在DataTable
?
非常感謝。