在XAML中以声明方式定义DataGrid的行

3

我有这段代码,需要将行中的第二个和第三个单元格绑定到不同的属性。对于我的英语不好,非常抱歉。

<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列和3行的网格?与“DataGrid”相比,这将简单得多。 - Anatolii Gabuza
你的意思是说你有一个列,比如说第二列,需要根据行绑定不同的值吗?比如第一行绑定x,第二行绑定y?如果是这种情况,你可以使用转换器。 - David Oesterreich
1个回答

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}}" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接