2012-01-23 70 views
2

請告訴我如何做一個值1單元的紅,如果值1> =值2和綠色VALUE1 <值2比較兩個綁定元素,並更改單元格顏色

<DataGrid.Columns> 
<DataGridTextColumn Width="20" Header="value1" Binding="{Binding value1}" /> 
<DataGridTextColumn Width="38" Header="value2 " Binding="{Binding value2 }"> 
     <DataGridTextColumn.ElementStyle> 
      <Style TargetType="{x:Type TextBlock}"> 
        <Style.Triggers> 
         ......................... 
         ......................... 
         ......................... 
        </Style.Triggers> 
      </Style> 
     </DataGridTextColumn.ElementStyle> 
</DataGridTextColumn> 
</DataGrid.Columns> 
+0

兩列都綁定到value1 ..假設這是一個錯字? –

+0

對不起,我犯了一個錯誤已經更正了 – longtrades

回答

4

我看到兩種方法可以做到這一點的時候,

  1. 您可以在綁定到此網格的實體中創建一個新屬性ValueColor,並返回正確的顏色。

  2. 您可以使用返回顏色的轉換器將TextBlock的Background與MultiBinding綁定到Value1和Value2。

下面是一個例子

創建MultiValueConverter這樣

public class ValuesToColorConverter : IMultiValueConverter 
    { 
     public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
     { 
      int value1 = (int)values[0]; 
      int value2 = (int)values[1]; 
      return value1 >= value2 ? Brushes.Red : Brushes.Green; 
     } 

     public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

,並使用此XAML顯示顏色

<Window.Resources> 
    <WpfApplication1:ValuesToColorConverter x:Key="colorConverter" /> 
    </Window.Resources> 
    <Grid> 
     <DataGrid ItemsSource="..."> 
      <DataGrid.Columns> 
       <DataGridTextColumn Width="20" Header="value1" Binding="{Binding value1}" /> 
       <DataGridTextColumn Width="38" Header="value2 " Binding="{Binding value2 }"> 
        <DataGridTextColumn.ElementStyle> 
         <Style TargetType="{x:Type TextBlock}"> 
          <Setter Property="Background"> 
           <Setter.Value> 
            <MultiBinding Converter="{StaticResource colorConverter}"> 
             <Binding Path="value1"/> 
             <Binding Path="value2"/> 
            </MultiBinding> 
           </Setter.Value> 
          </Setter> 
         </Style> 
        </DataGridTextColumn.ElementStyle> 
       </DataGridTextColumn> 
      </DataGrid.Columns> 
     </DataGrid> 

    </Grid> 

順便說一句,你有另一個錯誤太多,你應該在集合中添加GridColumns而不是Grid內容,使用我的xaml並且它可以工作

希望這會有所幫助

+0

請您多說一點,也許您可​​以用代碼 – longtrades

+0

舉例說明看編輯過的文章 –

+0

非常感謝,它很完美 – longtrades