C# 将数据从mysql绑定到wpf应用程序

C# 将数据从mysql绑定到wpf应用程序,c#,mysql,wpf,C#,Mysql,Wpf,我使用填充数据集从数据库中获取数据: DataSet myData = new DataSet(); MySqlDataAdapter adapter; string query = "Select * from visitors"; string table = "visitors"; adapter = new MySqlDataAdapter(query, connection); adapter.Fill(myData, table); 我试

我使用填充数据集从数据库中获取数据:

DataSet myData = new DataSet();
MySqlDataAdapter adapter;

string query = "Select * from visitors";
string table = "visitors";
adapter = new MySqlDataAdapter(query, connection);

adapter.Fill(myData, table);
我试图将
myData
中的数据绑定到DataGrid(
MainWindow.xaml.cs
):

MainWindow.xaml

`<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
    <DataGridTextColumn Header="First name" />
    <DataGridTextColumn Header="Second name" />
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <DockPanel>
            <TextBlock Text="{Binding Path=firstName, TargetNullValue=no data}"/>
            <TextBlock Text="{Binding Path=secondName,TargetNullValue=no data}"/>
        </DockPanel>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>`
`
`

我得到的唯一结果是23个空白行——与mysql表中的数字相同。我用谷歌搜索了这个问题,但找不到合适的答案。

我会给你一个理论上的解决方案

  • 创建一个可观察的集合(例如:
    observedcollection
    ),其中
    Person
    具有代码中提到的
    firstName
    secondName
    等属性
  • 用从
    数据库
    检索的
    数据集
    填充
    可观测集合
  • 最后,
    Bind
    ObservableCollection
    绑定到
    DataGrid
    ItemSource
  • 在上面的代码片段中,您没有绑定
    项源
    ,您刚刚提到了
    属性


    谢谢,它成功了。但是,在DataGrid
    ItemsSource=“{Binding Path=PersonCollection}”中指定ItemsSource不起作用
    MainWindow.xaml.cs
    中,然后在``内部
    MainWindow.xaml
    `<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn Header="First name" />
        <DataGridTextColumn Header="Second name" />
    </DataGrid.Columns>
    <DataGrid.RowDetailsTemplate>
        <DataTemplate>
            <DockPanel>
                <TextBlock Text="{Binding Path=firstName, TargetNullValue=no data}"/>
                <TextBlock Text="{Binding Path=secondName,TargetNullValue=no data}"/>
            </DockPanel>
        </DataTemplate>
    </DataGrid.RowDetailsTemplate>
    </DataGrid>`