2011-01-06 65 views
1

我有一個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

非常感謝。

回答

0

現在我用風格至極被創建在後面的代碼。它的工作! 感謝所有。