簡體   English   中英

WPF c#,綁定后面的代碼的數據網格列

[英]WPF c#, bind datagrid column with code behind

我有問題如何將數據網格列綁定到集合?

 dataGrid1.Columns.Add(new DataGridTemplateColumn { Header="d", Binding = "RoomNumber"}); 

綁定不存在我可以用什么來綁定?

它工作得很好,但我需要將它與后面的代碼綁定

 <DataGridTextColumn Header="Room Number" Binding="{Binding RoomNumber}"/>

據我了解,您想從后面的代碼中添加數據網格列,並且該列應該與綁定一起使用..?

這是從后面的代碼添加數據網格列的示例片段

 var col = new DataGridTextColumn();
            col.Header = "d";
            col.Binding = new Binding("RoomNumber");
            dataGrid1.Columns.Add(col);

使用這種方法,您可以根據需要添加任意數量的列,並且可以在運行時為每列提供數據綁定,並且可以一次指定 itemssource....

確保在您的數據網格中標記 AutoGenerateColumns="False" 以便您可以避免從 itemssource 添加不需要的列..

Bathineni (和其他人)的答案基本上是正確的,只要您在某個時候將 DataGrid 的 ItemsSource 屬性設置為您的集合。

使用數據網格的itemssource屬性綁定到集合。

MSDN

xaml 中的示例:

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

無法將單個列與集合綁定。 您必須將整個 DataGrid 與一個可以是集合或任何東西的項目源綁定,然后您將每個列與該集合的某些部分綁定

只是浪費了幾個小時來完成這項工作,如果有人遇到問題,添加我的起始代碼作為示例。

基礎型號:

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++;
}

用戶界面:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM