【问题标题】:Setting data grid column numbers with binding-WPF使用 binding-WPF 设置数据网格列号
【发布时间】:2023-04-08 06:26:01
【问题描述】:

我有一个 DataGrid,他的列之一应该获取 Grid 中行的序列号,DataGrid 绑定到以下列表:

public IList<xx> ListXX= new List<xx>();

xx 类包含几个绑定到其余列的变量。

如何将列表中的列号绑定到 DataGrid 中的列?

【问题讨论】:

  • 您的问题非常不清楚...您能否提供一个更完整的示例,您的数据是什么样的以及数据网格中有哪些列?

标签: wpf list datagrid


【解决方案1】:

我是这样解决问题的:

我创建了一个转换器来索引列表:

public class IndexConverter : IMultiValueConverter
{
    public object Convert(
        object[] values, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        var xx= values[0] as xx;
        var listxx= values[1] as List<xx>;
        if (xx== null)
            return null;
        return (listxx.FindIndex(x => x == xx) + 1).ToString();
    }

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

在 DataGrid 中,我使用 MultiBinding 绑定列:

 <DataGridTextColumn Header="#" IsReadOnly="True">
     <DataGridTextColumn.Binding>
           <MultiBinding Converter="{StaticResource indexConverter}">
                <Binding />
                 <Binding RelativeSource=
                     "{RelativeSource AncestorType={x:Type DataGrid}}"
                     Path="ItemsSource"></Binding>
            </MultiBinding>
     </DataGridTextColumn.Binding>
  </DataGridTextColumn>

【讨论】:

    【解决方案2】:

    您提供的信息有限。我假设您正在尝试将列表绑定到您的 WPF 网格。您可以按照下面列出的方式使用它。

    this.dataGrid1.ItemsSource = list;
    

    还有一件事是确保在您的 XAML AutoGenerateColumn 中设置为 true。

    如果这不起作用。发布更多信息,例如您的 XML 的外观以及您如何尝试将其绑定到代码中。

    【讨论】:

      【解决方案3】:

      如果您知道您的 ListXX 项目订单,则可以执行以下操作:

              <DataGrid>
                  <DataGridTextColumn Header="#" IsReadOnly="True" Binding="{Binding LisXX[0]}"></DataGridTextColumn>
                  <DataGridTextColumn Header="#" IsReadOnly="True" Binding="{Binding LisXX[5]}"></DataGridTextColumn>
                  <DataGridTextColumn Header="#" IsReadOnly="True" Binding="{Binding LisXX[1]}"></DataGridTextColumn>
              </DataGrid>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-12
        • 2015-02-01
        • 2016-05-09
        • 2013-08-10
        • 1970-01-01
        相关资源
        最近更新 更多