WPF c#,绑定数据网格列与代码后面
本文关键字:代码 网格 数据网 绑定 数据 WPF | 更新日期: 2023-09-27 18:03:57
我有问题如何将数据网格列绑定到集合?
dataGrid1.Columns.Add(new DataGridTemplateColumn { Header="d", Binding = "RoomNumber"});
binding不存在,我可以用什么来绑定?
可以很好地工作,但是我需要将它与
后面的代码绑定 <DataGridTextColumn Header="Room Number" Binding="{Binding RoomNumber}"/>
据我所知,你想从代码后面添加数据网格列,该列应该与绑定一起工作…?
下面是从 后面的代码中添加数据网格列的示例代码片段 var col = new DataGridTextColumn();
col.Header = "d";
col.Binding = new Binding("RoomNumber");
dataGrid1.Columns.Add(col);
使用这种方法,您可以添加任意多的列,您可以在运行时为每个列提供数据绑定,您可以一次指定itemssource ....
确保在你的数据网格中标记autogeneratecolns ="False",这样你就可以避免从itemssource添加不需要的列。
来自bathineni(和其他人)的答案基本上是正确的,只要您在某个时候将DataGrid的ItemsSource属性设置为您的集合。
无法将单个列与集合绑定。你需要将整个DataGrid与itemssource绑定itemssource可以是一个集合或任何东西然后将每一列与该集合的某一部分绑定
使用数据网格的itemssource
属性绑定到集合
MSDN
示例:
<DataGrid ItemsSource="{Binding Path=Tracks, IsAsync=True}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="Song" Width="*" Binding="{Binding Name}" />
<DataGridTextColumn Header="Artist" Width="*" Binding="{Binding Artist}" />
<DataGridTextColumn Header="Album" Width="*" Binding="{Binding Album}" />
</DataGrid.Columns>
</DataGrid>
后面的代码示例:
dataGrid1.ItemsSource = tracks;
只是浪费了几个小时让这个工作,添加我的起始代码作为示例,如果有人有麻烦。
基本模型:
public class SampleDataGridLine
{
public SampleDataGridLine()
{
data = new string[6];
for (int i = 0; i < 6; i++)
data[i] = "n/a";
}
public string[] data;
public string Cycle { get { return data[0]; } set { data[0] = value; } }
public string a1 { get { return data[1]; } set { data[1] = value; } }
public string a2 { get { return data[2]; } set { data[2] = value; } }
public string a3 { get { return data[3]; } set { data[3] = value; } }
public string a4 { get { return data[4]; } set { data[4] = value; } }
public string a5 { get { return data[5]; } set { data[5] = value; } }
}
背后的代码:
int runningIndex;
private void Button_Click(object sender, RoutedEventArgs e)
{
string text = "a" + runningIndex;
var col = new DataGridTextColumn();
col.Header = text;
col.Binding = new Binding(text);
dataGrid.Columns.Add(col);
runningIndex++;
}
UI:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Vertical" Margin="20">
<Button Click="Button_Click" Width="100" Height="30" Content="AddColumn"/>
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Vertical" Margin="20">
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Cycle" Binding="{Binding Cycle}"/>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
</Grid>