我有一個DataGrid,他的一列應該得到的網格行的序列號,將DataGrid綁定到下面的列表中設置數據網格列數:與綁定WPF
public IList<xx> ListXX= new List<xx>();
XX類包含綁定到其餘列的幾個變量。
如何將列表中列的數量綁定到DataGrid中的列中?
我有一個DataGrid,他的一列應該得到的網格行的序列號,將DataGrid綁定到下面的列表中設置數據網格列數:與綁定WPF
public IList<xx> ListXX= new List<xx>();
XX類包含綁定到其餘列的幾個變量。
如何將列表中列的數量綁定到DataGrid中的列中?
我解決了這個問題是這樣的:
我創建了一個轉換器,索引列表:
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>
由於您提供的信息有限。我假設你正試圖將列表綁定到你的WPF網格。你可以使用下面列出的。
this.dataGrid1.ItemsSource = list;
還有一件事是確保在您的XAML AutoGenerateColumn中設置爲true。
如果這不起作用。發佈更多信息,比如您的XML如何看起來像以及如何嘗試在代碼中綁定它。
,如果你知道你的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>
你的問題是非常不清楚的......你能提供一個更完整的例子,你的數據是怎麼樣的,以及在datagrid中有什麼列? – nemesv