Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF Datagrid未接收递增值_C#_Wpf_Datagrid - Fatal编程技术网

C# WPF Datagrid未接收递增值

C# WPF Datagrid未接收递增值,c#,wpf,datagrid,C#,Wpf,Datagrid,我在MainWindow.xaml中有一个WPF Datagrid,数据正从另一个表单(AddFixtures.xaml)传递给它。我在AddFixtures.xaml.cs中有一个“Fixture”类: public class Fixture { public int fixtureID { get; set; } public int channelID { get; set; } public string fixtureName

我在MainWindow.xaml中有一个WPF Datagrid,数据正从另一个表单(AddFixtures.xaml)传递给它。我在AddFixtures.xaml.cs中有一个“Fixture”类:

public class Fixture
    {
        public int fixtureID { get; set; }
        public int channelID { get; set; }
        public string fixtureName { get; set; }
        public string position { get; set; }
        public string patch { get; set; }
        public string mode { get; set; }
        public string power { get; set; }
        public string direction { get; set; }
        public int channelsUsed { get; set; }
    }
private void BtnAddFixture_Click(object sender, RoutedEventArgs e)
    {
        int quantity = Int32.Parse(txtQuantity.Text);
        for (int i = 0; i < quantity; i++)
        {
            MainWindow.fixtureData.Add(new Fixture()
            {
                fixtureID = Int32.Parse(txtFixtureID.Text),
                channelID = Int32.Parse(txtChannelID.Text),
                fixtureName = cbxFixture.Text,
                position = cbxPosition.Text,
                patch = cbxUniverse.Text + "." + txtChannel.Text,
                mode = cbxMode.Text,
                power = cbxSocca.Text + "." + cbxWay.Text,
                direction = "Forwards",
                channelsUsed = Int32.Parse(lblChannels.Content.ToString())
            });
            fixtureID++;
            channelID++;
            txtFixtureID.Text = fixtureID.ToString();
            txtChannel.Text = channelID.ToString();
        }
    }
此(MainWindow.xaml.cs)接收到的:

基本上,我将信息输入另一个表单并按下按钮,然后将数据添加到DataGrid。我有一些信息需要根据数量增加。我已经得到了这个增量,但是在DataGrid中,它总是显示输入的第一个值。当我单击(AddFixtures.xaml.cs)中的按钮时,将执行以下代码:

private void BtnAddFixture\u单击(对象发送方,路由目标)
{
int quantity=Int32.Parse(txtQuantity.Text);
对于(int i=0;i
如果您调试FixtureView,将非常感谢您的帮助。列表中添加的项目是否可用?如果是这样,您有一个问题,即添加项目时无法识别视图?
可能您将网格的源更改为-->这将在更新任何内容时更新视图

作为第一步,您应该创建一个具有如下FixtureData属性的视图模型类:
public observeCollection FixtureData{get;}=new observeCollection()。然后两个窗口将视图模型类的相同实例分配给它们的
DataContext
属性。然后DataGrid将其ItemsSource绑定为
,而按钮将向集合添加项,如
var vm=(MainViewModel)DataContext;添加(新夹具{…})。在web上搜索
MVVM
。这很有意义,但如何将vm类的同一实例分配给数据上下文?创建一个MainViewModel对象,并根据需要将其分配给任意多个窗口的DataContext。例如,在主窗口构造函数中创建它,如
DataContext=newmainviewmodel()。如果从主窗口打开另一个窗口,请写入
var newWindow=new ChildWindow{DataContext=DataContext}除此之外,行
FixtureView.Items.Add(fixtureData)看起来可疑。似乎您正在将整个
fixtureData
集合作为单个项目添加。当然不正确。虽然这通常应该是一个评论而不是一个答案,但它也有部分是错误的。即使使用ObservableCollection,当项目属性更改时,UI也不会更新。完全不是“如果有任何更新”。
private void BtnAddFixture_Click(object sender, RoutedEventArgs e)
    {
        int quantity = Int32.Parse(txtQuantity.Text);
        for (int i = 0; i < quantity; i++)
        {
            MainWindow.fixtureData.Add(new Fixture()
            {
                fixtureID = Int32.Parse(txtFixtureID.Text),
                channelID = Int32.Parse(txtChannelID.Text),
                fixtureName = cbxFixture.Text,
                position = cbxPosition.Text,
                patch = cbxUniverse.Text + "." + txtChannel.Text,
                mode = cbxMode.Text,
                power = cbxSocca.Text + "." + cbxWay.Text,
                direction = "Forwards",
                channelsUsed = Int32.Parse(lblChannels.Content.ToString())
            });
            fixtureID++;
            channelID++;
            txtFixtureID.Text = fixtureID.ToString();
            txtChannel.Text = channelID.ToString();
        }
    }