Как связать таблицу в наборе данных к WPF datagrid в C# и XAML

Я искал на часы для чего-то очень простого: свяжите WPF datagrid с таблицей данных для наблюдения столбцов во время проектирования. Я не могу заставить ни один из примеров работать на меня.

Вот код C# для заполнения таблицы данных InfoWork в информации о наборе данных:

info = new Info();
InfoTableAdapters.InfoWorkTableAdapter adapter = new InfoTableAdapters.InfoWorkTableAdapter();
adapter.Fill(info.InfoWork);

Проблема состоит, неважно в том, как я объявляю 'информацию', или ‘infoWork’ Visual Studio/XAML не может найти его. Я попробовал:

<Window.Resources>
    <ObjectDataProvider x:Key="infoWork" ObjectType="{x:Type local:info}"  />
</Window.Resources>

Я также попробовал этот пример от wpf.codeplex, но XAML даже не нравится “локальное”: ключевое слово!

<Window.Resources>
   <local:info x:Key="infoWork"/>
</Window.Resources>

Здесь существует действительно два основных вопроса: 1) Как я объявляю таблицу InfoWork в C# так, чтобы XAML видела его? Я пытался объявить это Общественность в классе окна, что XAML существует в без успеха. 2) Как я объявляю ресурс окон в XAML, specifcally таблица данных в наборе данных?

Из любопытства, там причина, что ItemsSource просто не обнаруживается как свойство, которое можно быть установлен в окне дизайна свойств?

7
задан Jim Thomas 24 March 2010 в 21:12
поделиться

1 ответ

У меня работает следующее использование Microsoft DataGrid:

В XAML я включаю DataGrid:

    <WpfToolkit:DataGrid
        Grid.Row="4" Grid.Column="0"
        ItemsSource="{Binding Path=GridData, Mode=OneWay}" >
    </WpfToolkit:DataGrid>

В моей модели представления я предоставляю DataView:

  public DataView GridData
  {
     get
     {
        DataSet ds = new DataSet("MyDataSet");

        using (SqlConnection conn = new SqlConnection(ConnectionString))
        {
           SqlCommand cmd = conn.CreateCommand();
           cmd.CommandType = CommandType.Text;
           cmd.CommandText = "SELECT * FROM HumanResources.Employee";

           SqlDataAdapter da = new SqlDataAdapter(cmd);
           da.Fill(ds);
        }

        return ds.Tables[0].DefaultView;
     }
  }
6
ответ дан 7 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: