wpf中的Datagrid绑定具有一个静态列,其余为动态列

wpf中的Datagrid绑定具有一个静态列,其余为动态列,wpf,dataset,Wpf,Dataset,我正在WPF上工作,在那里我必须绑定datagrid。我尽力解释我的问题,如果有任何疑问,请询问 我可以使用以下代码绑定datagrid: XAML视图: <DataGrid Height="257" HorizontalAlignment="Left" Margin="20,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="Auto"></DataGrid> dataGrid1.ItemsSource=

我正在WPF上工作,在那里我必须绑定datagrid。我尽力解释我的问题,如果有任何疑问,请询问

我可以使用以下代码绑定datagrid:

XAML视图:

 <DataGrid Height="257" HorizontalAlignment="Left" Margin="20,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="Auto"></DataGrid> 
dataGrid1.ItemsSource=dataset.Tables[0].DefaultView; ataGrid1.DataContext=dataset.Tables[0]

这段代码为我提供了一个网格,其中包含从数据库传递的默认列名

但问题是,在我的应用程序中,我有一个组合框,我必须从中选择列名称,如column1、column2。基于此选择,我必须仅将datagrid与这些列绑定,但在所有情况下,我希望我的staticcolumn显示修改后的名称日期记录,其余选定列使用默认名称


谢谢

就我个人而言,我宁愿使用

但是,您需要做的是基于组合框中每个项目的单独查询

比如:

public string SelectedComboboxItem
{
    get
    {
          return _selectedComboboxItem;
    } 
    set
    {
         _selectedComboboxItem = value;
         OnPropertyChanged(SelectedComboboxItem);

         SqlDataAdapter da;
         select (_selectedComboboxItem)
         {
               case "Column 1":
                   da = new SqlDataAdapter("select staticcolumn,column from TBL_SENSORS", connection);


               case "Column 2":
                   da = new SqlDataAdapter("select staticcolumn,column2 from TBL_SENSORS", connection);


          //All the other queries go here

         }

         DataSet ds = new DataSet();
         da.Fill(ds, "SensorZones");

         dataGrid1.ItemsSource = dataset.Tables[0].DefaultView; 
         dataGrid1.DataContext = dataset.Tables[0];
    }
}
因此,将组合框的选定项绑定到此属性(需要实现),然后每个选择都应该有不同的数据源。不幸的是,这应该会重置datagrid,所以我不确定这是否是您想要的


或者,如果只想使列不可见,您可以创建一个转换器并将组合框的selecteditem绑定到columns的visibility属性。

为什么要使用数据适配器?你的目标是c#的旧版本吗?嗨@ExitMusic,这只是为了测试,这就是为什么我要使用它。你对这个解决方案有什么想法吗?它是否按照你想要的方式工作?不完全是,但我有一个想法,并且已经这样做了,如果可能的话,我还将添加我的代码
public string SelectedComboboxItem
{
    get
    {
          return _selectedComboboxItem;
    } 
    set
    {
         _selectedComboboxItem = value;
         OnPropertyChanged(SelectedComboboxItem);

         SqlDataAdapter da;
         select (_selectedComboboxItem)
         {
               case "Column 1":
                   da = new SqlDataAdapter("select staticcolumn,column from TBL_SENSORS", connection);


               case "Column 2":
                   da = new SqlDataAdapter("select staticcolumn,column2 from TBL_SENSORS", connection);


          //All the other queries go here

         }

         DataSet ds = new DataSet();
         da.Fill(ds, "SensorZones");

         dataGrid1.ItemsSource = dataset.Tables[0].DefaultView; 
         dataGrid1.DataContext = dataset.Tables[0];
    }
}