2010-10-13 42 views
3

我有這段代碼,我需要將行中的第二和第三個單元綁定到不同的屬性。對不起,我的英語不好。在XAML中聲明性地定義DataGrid的行

<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Stretch" Name="measureDataGrid" VerticalAlignment="Stretch"> 
             <DataGrid.Columns> 
              <DataGridTextColumn x:Name="measureName" Header="Наименование" Width="*" /> 
              <DataGridTextColumn x:Name="measureValue" Header="Значение" Width="Auto" /> 
              <DataGridTextColumn x:Name="measureDestValue" Header="Потенциальное значение" Width="Auto" /> 
             </DataGrid.Columns> 
             <DataGrid.Items> 
              <!--<DataGridRow>--> 
              <RowDefinition/> 
              <RowDefinition/> 
              <RowDefinition/>               
             </DataGrid.Items>         
            </DataGrid> 
+1

爲什麼不使用帶有3列和行的網格?與黑客攻擊'DataGrid'相比,它會簡單得多。 – 2012-08-15 10:45:33

+0

你的意思是你有一個列......第2列需要根據行來綁定到不同的值嗎? Row1綁定到x Row2綁定到y?如果是這種情況,你可以使用轉換器 – 2013-01-28 23:18:20

回答

0

所以,如果你需要轉換的值(這可以用來顯示在不同行同一列不同的值),你可以使用一個ValueConverter。

創建一個實現的IValueConverter這將是這個樣子的類:

public object Convert(object value, Type targetType, object parameter,System.Globalization.CultureInfo culture) 
{ 
    bool boolValue = (bool)value; 

    if(boolValue) 
    return x; 
    else 
    return y; 

} 

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
{ 
    throw new NotImplementedException(); 
} 

在XAML中創建對它的引用:

<converters: MeasureConverter x:Key="MeasureConverter" /> 

而在你DataGridTextColumn使用這樣的:

<DataGridTextColumn Header="measureRow1" DataMemberBinding="{Binding ValueThatWouldDetermineWhatToShow, Converter={StaticResource MeasureConverter}}" /> 
<DataGridTextColumn Header="measureRow2" DataMemberBinding="{Binding ValueThatWouldDetermineWhatToShow, Converter={StaticResource MeasureConverter}}" />