猿问

如何修复从新表单实例向主表单上的数据网格发送数据

我在 WPF 中有一个简单的库存管理器,它使用一个数据网格连接到一个表,前几天使用 SQL 工作,但更改了一行代码,现在它坏了。自从我把它弄坏后我就睡着了,不知道怎么修好它。


问题似乎与下面 MainWindow 类中的 dataGrid1.Items.Add(testtables) 有关。


我在 trycatch 中运行它时出现异常消息,指出在使用 ItemsSource 时该操作无效,应该使用 ItemsControl.ItemsSource 来访问和修改元素。


这是主窗体的代码


namespace WpfApp2

{


    /// <summary>

    /// Interaction logic for MainWindow.xaml

    /// </summary>

    public partial class MainWindow : Window

    {


        DataClasses1DataContext dc = new DataClasses1DataContext(Properties.Settings.Default.TestingConnectionString);


        public MainWindow()

        {

            InitializeComponent();

            if (dc.DatabaseExists())

            {

                dataGrid1.ItemsSource = dc.TestTables;

            }

        }


        private void newButton_Click(object sender, RoutedEventArgs e)

        {

            Window1 window1 = new Window1();

            window1.Show();

        }


        public void NewLine (int ID, string nm, decimal pc)

        {

            TestTable testtable = new TestTable

            {

                ID = ID,

                Name = nm,

                Price = pc

            };


            dataGrid1.Items.Add(testtable);


        }


        private void saveButton_Click_1(object sender, RoutedEventArgs e)

        {

            dc.SubmitChanges();

        }


    }

}

MainWindow 的 XAML 代码


<Window x:Class="WpfApp2.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

        xmlns:local="clr-namespace:WpfApp2"

        mc:Ignorable="d"

        Title="MainWindow" Height="450" Width="800">

    <Grid>


胡子哥哥
浏览 86回答 1
1回答

慕的地8271018

在您的代码的这一部分:&nbsp; public MainWindow()&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; InitializeComponent();&nbsp; &nbsp; &nbsp; &nbsp; if (dc.DatabaseExists())&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataGrid1.ItemsSource = dc.TestTables;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }您通过将数据表分配给 datagrid.ItemsSource 属性来显示数据。如果这样做,您需要通过修改 DataTable 而不是 DataGrid 来添加项目。dataGrid1.Items.Add(testtable);因此,尝试将 testtable 项目添加到现有集合 dc.TestTables 而不是上面的内容
随时随地看视频慕课网APP
我要回答