【问题标题】:Define DataGrid's rows declaratively in XAML在 XAML 中以声明方式定义 DataGrid 的行
【发布时间】:2010-10-13 11:12:16
【问题描述】:

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

<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>

【问题讨论】:

  • 为什么不使用 3 列和 3 行的网格?与破解 DataGrid 相比,它会简单得多。
  • 你的意思是你有一个列..说第 2 列需要根据行绑定到不同的值? Row1 绑定到 x Row2 绑定到 y?如果是这种情况,您可以使用转换器

标签: c# xaml datagrid


【解决方案1】:

因此,如果您需要转换一个值(这可用于在同一列中为不同的行显示不同的值),您可以使用 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}}" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-01
    • 2023-03-16
    • 2010-12-24
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多