2010-07-22 75 views
2

我有一個DataGrid的DataTrigger設置,所以當它的值是「UP」時,我希望觸發器只改變'directionColumn'datagridcolumn中的背景。DataGrid的WPF Datatrigger只改變整行

我到目前爲止已更新整行。我也嘗試在setter元素中放置'targetname',但這只是一個錯誤。請幫忙。

XAML:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="summaryReportDataGridDATE" RowDetailsVisibilityMode="VisibleWhenSelected" Width="330"> 
    <DataGrid.CellStyle> 
     <Style TargetType="DataGridCell"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=Direction}" Value="UP"> 
        <Setter> 
         <Setter.Property>Background</Setter.Property> 
         <Setter.Value>Red</Setter.Value> 
        <!--<Setter Property="Background" Value="Red" TargetName="directionColumn"/>--> 
        </Setter> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.CellStyle> 
    <DataGrid.Columns> 
     <!--<DataGridTemplateColumn x:Name="dateColumn" Header="Date" Width="100" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" > 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <DatePicker SelectedDate="{Binding Path=Date, Mode=OneWay}" /> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn>--> 

     <DataGridTextColumn x:Name="dateColumn" Binding="{Binding Path=Date, StringFormat={}{0:dd/MM/yyyy}}" Header="Date" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT"/> 
     <DataGridTextColumn x:Name="closeColumn" Binding="{Binding Path=ClosingPrice}" Header="ClosingPrice" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" /> 
     <DataGridTextColumn x:Name="directionColumn" Binding="{Binding Path=Direction}" Header="Direction" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" /> 
     <DataGridTextColumn x:Name="resultColumn" Binding="{Binding Path=Result}" Header="Result" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" /> 
    </DataGrid.Columns> 
</DataGrid> 

回答

6

怎麼樣TemplateColumn中,而不是自定義單元格樣式:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="summaryReportDataGridDATE" RowDetailsVisibilityMode="VisibleWhenSelected" Width="330">      
     <DataGrid.Columns> 
      <DataGridTextColumn x:Name="dateColumn" Binding="{Binding Path=Date, StringFormat={}{0:dd/MM/yyyy}}" Header="Date" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT"/> 
      <DataGridTextColumn x:Name="closeColumn" Binding="{Binding Path=ClosingPrice}" Header="ClosingPrice" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" /> 
      <DataGridTemplateColumn x:Name="directionColumn" Header="Direction" Width="80" CanUserReorder="False" CanUserSort="False" > 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <TextBlock x:Name="directionColumnTextBlock" Text="{Binding Path=Direction}" Width="80" FontFamily="Arial Rounded MT"/> 
         <DataTemplate.Triggers> 
          <DataTrigger Binding="{Binding Path=Direction}" Value="UP"> 
           <Setter TargetName="directionColumnTextBlock" Property="Background" Value="Red" /> 
          </DataTrigger> 
         </DataTemplate.Triggers> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn>                    
      <DataGridTextColumn x:Name="resultColumn" Binding="{Binding Path=Result}" Header="Result" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" /> 
     </DataGrid.Columns> 
    </DataGrid> 
+0

太好了!謝謝。 – Chris 2010-07-24 07:13:04