2011-01-06 27 views
1

DataGridDataTableオブジェクトにバインドされています。ユーザーは特別なボタンを押すことができます。このボタンを押すと、このDataTableオブジェクトに新しい列が動的に追加されます。 DataGridAutoGenerateFieldsプロパティは、この列の各列がDataTemplate(各セルには複数のTextBlockが含まれています)という形式の列であるため、falseに設定されています。 データバインディングでスタイルを動的に作成/変更する方法

は、私は私の 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に新しい列を作成します。しかし、このスタイルで私のTextBlockTextのプロパティに異なる値を動的に設定するにはどうしたらいいですか?

たとえば、DataGridの最初の列は、Column_1、Column_2、Column_3にバインドされており、DataTableにバインドされています。ユーザーが「新しい列を追加」を押すと、プログラムはDataTableオブジェクトに「Column_4」、「Column5」、「Column 6」の3つの新しい列を作成し、このスタイルで新しい列をDataGridに作成します。 DataTableの新しい列に2番目の列?

どうもありがとうございました。

答えて

0

今私はウィッヒは、背後にあるコードで作成されたスタイルを使用しています。それは働いています! おかげで、すべて。

関連する問題