2010-10-13 50 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}}" />