我有一个DataGrid,他的一个列应该得到Grid中行的序列号,DataGrid绑定到以下列表:
public IList<xx> ListXX= new List<xx>();
xx类包含几个绑定到其余列的变量。
如何将列表中列的编号绑定到DataGrid中的列?
答案 0 :(得分:2)
我用这种方式解决了问题:
我创建了一个索引列表转换器:
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>
答案 1 :(得分:1)
您提供的信息有限。我假设您正在尝试将列表绑定到WPF网格。您可以使用下面列出的内容。
this.dataGrid1.ItemsSource = list;
还有一件事是确保在XAML AutoGenerateColumn中设置为true。
如果这不起作用。发布更多信息,例如您的XML如何以及如何尝试在代码中绑定它。
答案 2 :(得分:1)
如果您知道自己的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>